4

当我尝试通过应用程序小部件打开 Flash 时,Flash 可以从应用程序正常打开(将 surface_view 添加到布局中),但它不起作用。我使用了CameraSurfaceView这是我正在使用的代码

Camera mCamera;
SurfaceView preview;
mCamera = Camera.open();
mCamera.setPreviewDisplay(preview.getCameraHolder());
Parameters params = mCamera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(params);  
mCamera.startPreview();

Manifest 中添加的权限和功能包括:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />
4

1 回答 1

8

相机需要一个表面才能打开
手电筒。但是 SurfaceView 不能应用于小部件。所以这就是你需要的......

将此添加到您的turnFlashOn代码中:

try {
mCamera.setPreviewTexture(new SurfaceTexture(0));
} catch (IOException e) {
e.printStackTrace();
}

此外,删除代码中对 SurfaceView 的所有引用,因为它不适用于小部件

于 2014-02-08T14:18:33.373 回答