[英]LED flashlight on Galaxy Nexus controllable by what API?
如此多的LED手电筒API问题适用于Android。 我不敢问另一个,但是这里......
使用经过验证的真实FLASH_MODE_TORCH,我可以满足我的三星Galaxy SII并启用LED闪光灯。 在我朋友的Galaxy Nexus上,没有这样的运气。 也不是我的另一个朋友的Droid X.
我注意到似乎需要特定的本机IOCTL调用的设备数量不是很少。 这是Galaxy Nexus的情况吗? 我如何找到编程参考?
我正在做标准的FLASH_MODE_TORCH /“flash-mode”=“torch”,startPreview()链。
令人失望的是,这个看似标准的API似乎并不是那么普遍。
我发现有些设备需要SurfaceView来打开LED。
SurfaceView preview = (SurfaceView) findViewById(R.id.PREVIEW);
SurfaceHolder mHolder = preview.getHolder();
mHolder.addCallback(this);
Camera mCamera = Camera.open();
mCamera.setPreviewDisplay(mHolder);
// Turn on LED
Parameters params = mCamera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(params);
mCamera.startPreview();
...
// Turn off LED
Parameters params = mCamera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params);
mCamera.stopPreview();
mCamera.release();
您的活动需要实现SurfaceHolder.Callback:
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {}
public void surfaceCreated(SurfaceHolder holder) {
mHolder = holder;
mCamera.setPreviewDisplay(mHolder);
}
public void surfaceDestroyed(SurfaceHolder holder) {
mCamera.stopPreview();
mHolder = null;
}
必须显示surfaceview, android:visibility="invisible"
或高度和宽度为0将不起作用。 不幸的是我没有找到一个很好的解决方案来隐藏它,所以我只给它一个1x1dip的大小并将它放在一个按钮下面..
**(扩展上面的段落[没有足够的代表回复,但觉得它很有用])在当前内容视图的XML中的某个地方,您需要:
<SurfaceView
android:id="@+id/PREVIEW"
android:layout_width="1dip"
android:layout_height="1dip"/>
如果你在RelativeLayout(首选)中有它,你也可以使用alignParentLeft / Bottom将它塞进一个角落里。 这种方法适用于我的Galaxy Nexus,但它是Droid X的一个已知问题(电话端)(无论如何都有.621更新),并且不适用于我的。 很棒的回答,蒂莫什!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.