我正在尝试在一个小工具中使用相机LED手电筒。我已经找到了几个关于这个话题的帖子(也就是后面提到的the one ),现在我正在尝试使用以下方法来控制灯光:
Camera cam = Camera.open();
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.release();
在AndroidManifest.xml中尝试了不同的权限,目前我有:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera.flash" />
我正在我的Galaxy Tab上测试这一点,因为我手头没有任何其他Android设备:灯不亮。所以我现在有几个问题:
谢谢你的见解!
顺便说一句,我很快就用quick-settings进行了测试,这里提到了几次。手电筒在快速设置时也不起作用。
请注意,Galaxy Tab stil使用的是android 2.2。我看到在2.2和2.3之间有一些变化。
评论:我知道它必须以某种方式工作,因为我在市场上找到了其他与Galaxy Tab完美配合的应用程序。
注释2:如果我设置了cam.setParameters(p);,并用getFlashMode()直接向摄像头询问当前状态,它会正确地返回FLASH_MODE_TORCH。但是,如果我释放相机并重新打开它,它将返回FLASH_MODE_OFF。这几乎就像是摄像头对象接受了请求,但并没有真正将其传递给硬件!?
--
在Konstantins注释之后,我删除了cam.release();部分。他是对的,如果你松开摄像头,设置就不会被保留。如果您再次使用cam.open(),您将获得一个新的实例,但灯已关闭。不过银河系标签上的灯还是不亮。所以,我猜如果你试图通过一个小工具来控制它,那就很难让灯一直亮着。一旦后台服务完成,camera对象就会自动释放,因此灯光会再次关闭。我的问题仍然存在,特别是为什么摄像头一开始就没有打开。
https://stackoverflow.com/questions/5503480
复制相似问题