我正在编写一个将闪光模式设置为手电筒的应用程序。我一直在 Droid X 上测试该应用程序,但 LED 灯不亮。我在 Droid Incredible 上试了一下,效果很好。我无法弄清楚问题是什么。这是我用于打开手电筒模式的代码的一部分。
Camera mCamera = Camera.open();
Camera.Parameters params = mCamera.getParameters();
if(params.getFlashMode() != null){
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
}
mCamera.setParameters(params);
我添加了 mCamera.startPreview();因为我读到这应该有所作为,但事实并非如此。我还列出了可用的闪光模式并将它们显示在屏幕上,以确保我的 Droid X 确实具有手电筒模式,并且它在列表中。我什至根据我在网上找到的代码创建了一个新应用程序,它可以通过一个按钮打开和关闭 LED 闪光灯。它再次在 Droid Incredible 上运行良好,但在 Droid X 上运行良好。我是否缺少让它在 Droid X 上运行的东西,或者它可能与 Gingerbread 有什么关系? Droid X 运行 Gingerbread,Droid Incredible 运行 FroYo。
最佳答案
设置 FLASH_MODE_TORCH 时有很多怪癖。
通常您需要启动相机预览:
Camera mCamera = Camera.open();
mCamera.startPreview();
Camera.Parameters params = mCamera.getParameters();
if(params.getFlashMode() != null){
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
}
mCamera.setParameters(params);
这可能会在某些手机上解决,其他手机也需要将预览绘制到 SurfaceView。这可以通过在您的 Activity 中实现 SurfaceHolder.Callback 接口(interface)来完成。
查看示例 here 。