【发布时间】:2013-08-26 10:13:47
【问题描述】:
我有以下 android 代码(这里用伪代码编写):
mCamera = configAndInitialize(); //all I want to do before taking picture
mCamera.startPreview();
mCamera.torchOn(); //setting parameters with flash mode torch
onClick(){
mCamera.stopPreview();
mCamera.takePicture();
mCamera.torchOff();
}
有时(通常当手机最近重新启动并且在此应用程序之前未使用相机时)此代码以错误 100 相机服务器死亡结束。如果相机在正常工作之前成功拍照。
我调试了很长时间,当我用 Torch 注释掉行时,我发现它可以工作。无论拍照是否有效,我都可以看到手电筒在这两种情况下都有效。
torchOn 的代码如下:
if(mCamera != null){
mCamera.stopPreview();
Camera.Parameters p = mCamera.getParameters();
List<String> supported = p.getSupportedFlashModes();
if (supported.contains(Camera.Parameters.FLASH_MODE_TORCH)) {
p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
}
mCamera.setParameters(p);
mCamera.startPreview();
}
有什么原因导致手电筒无法拍照吗?我观察到它发生在摩托罗拉 Razr 和三星 Galaxy SIII 上。
我在我的设备上安装了这个应用程序的两个版本(名称不同等等)。我会做以下事情:
- 重启设备
- 尝试了带火炬的应用
- 如果 app-with-torch 确实在第 1 点起作用。
- 试过没有火炬的应用程序
- 尝试了带火炬的应用
结果如下:
- App-without-torch 始终有效
- App-with-torch 在大约 80% 的尝试中在第 2 点不起作用。(重启后)
- App-with-torch 始终在第 5 点工作。(在使用 app-without-torch 之后)
即使我在拍照前添加了 torchOff(),我的应用也会开始工作。
【问题讨论】:
-
只是好奇 - 是否有技术上的原因为什么仅仅启动相机是不可能获得所需照片的方法? (问题:一些三星设备可以在 activityOnResult 参数中传递 data=null。)
-
@HowardPautz 我有自定义布局,我需要在拍照时打开手电筒。拍照很容易。
标签: android camera android-camera