Flash从应用程序开始正常运行(将surface_view添加到布局),当我尝试通过app-widget打开闪存时,它无法正常工作。我使用了Camera和SurfaceView这是我正在使用的代码
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" />
答案 0 :(得分:8)
相机需要一个表面才能打开以便打开 手电筒......无论SurfaceView都无法应用于窗口小部件。所以这就是你需要的......
将其添加到您的turnFlashOn
代码中:
try {
mCamera.setPreviewTexture(new SurfaceTexture(0));
} catch (IOException e) {
e.printStackTrace();
}
此外,删除代码中对surfaceview的所有引用,因为它不适用于小部件