我正在尝试在相关部件中使用相机LED手电筒。我发现几个线程关于这个主题(即the one后面提到..),现在我尝试使用,以控制光:在Android中使用相机手电筒
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设备:灯不亮。所以我现在有几个问题:
- 是否有任何方法来测试模拟器中的指示灯行为?
- 我在这里做错了什么?
- 根据this问题处理同样的问题,它在Galaxy Tab上的工作方式不同。怎么样?
- 最后,如果它的工作方式不同,我开始怀疑它是否仅仅是Galaxy Tab或其他设备是否也使用不同的方法。这将是很难测试,这似乎对我来说很奇怪。
感谢您的任何见解!
顺便说一句,我很快测试了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。就好像Camera对象知道请求但并没有真正传递给硬件!
-
Konstantins评论之后,我删除了cam.release();部分。他是对的,如果您释放相机,设置不会持续。如果你再次使用cam.open(),你会得到一个关闭灯光的新实例。尽管如此,光仍然不能在星系标签上工作。 所以,如果你试图通过一个小部件来控制它,我想这很难保持清晰。一旦后台服务完成,相机对象将自动释放,因此指示灯会再次关闭。我的问题依然存在,特别是为什么相机无法在第一时间开机。
即使我想知道如何做到这一点。 Upvoted! – CuriousMind 2011-04-02 20:46:37
我也没有任何想法,但如果你找不到解决方案,你可以从市场上下载一个手电筒应用程序,并尝试反编译它。 – RoflcoptrException 2011-04-02 20:51:04
那么,在我开始逆向工程someones代码之前,我真的很想从编码器的更多洞察力在stackoverflow ;-) – pgruetter 2011-04-02 20:53:43