我正在尝试在小部件中使用相机 LED 手电筒。我找到了几个关于这个主题的线程(即后面提到的那个..),现在我正在尝试使用以下方法控制灯光:
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 设备:灯没有打开。所以我现在有几个问题:
- 有什么方法可以测试模拟器中的 LED 灯行为吗?
- 我在这里做错了吗?
- 根据处理相同问题的这个问题,它在 Galaxy Tab 上的工作方式不同。如何?
- 最后,如果它的工作方式不同,我开始怀疑它是否只是 Galaxy Tab 还是其他设备也使用不同的方法。那时很难测试,对我来说似乎很奇怪。
感谢您的任何见解!
顺便说一句,我快速测试了这里多次提到的快速设置。手电筒也不适用于快速设置。
请注意,Galaxy Tab 仍然使用 android 2.2。我看到 2.2 和 2.3 之间有一些变化。
评论:我知道它必须以某种方式工作,因为我在市场上发现了与 Galaxy Tab 完美配合的其他应用程序。
评论 2:如果我设置 cam.setParameters(p); 并使用 getFlashMode() 直接向相机询问当前状态,它会正确返回 FLASH_MODE_TORCH。但是,如果我释放相机并重新打开它,它会返回 FLASH_MODE_OFF。就好像 Camera 对象承认了请求,但并没有真正将其传递给硬件!?
--
在康斯坦丁发表评论后,我删除了 cam.release(); 部分。他是对的,如果您释放相机,设置不会保留。如果您再次使用 cam.open(),您将获得一个关闭灯的新实例。不过,灯仍然无法在银河选项卡上工作。所以,我想如果你当时试图通过一个小部件来控制它,就很难保持点亮。后台服务完成后,相机对象会自动释放,因此灯会再次关闭。我的问题仍然存在,尤其是为什么相机一开始就没有打开。