【发布时间】:2015-10-25 19:21:40
【问题描述】:
我正在使用以下代码来打开和关闭 LED 手电筒:
public Flashlight(SurfaceView preview, Context context){
this.preview = preview;
this.context = context;
mHolder = preview.getHolder(); //mHolder is surfaceHolder
mHolder.addCallback(this);
try {
mCamera = Camera.open();
params = mCamera.getParameters();
mCamera.setPreviewDisplay(mHolder);
mCamera.startPreview();
//AUTOFOCUS LASER FIX ON LG G3
List<String> focusModes = params.getSupportedFocusModes();
if (focusModes.contains(params.FOCUS_MODE_INFINITY)) {
params.setFocusMode(params.FOCUS_MODE_INFINITY);
}
else{
if (focusModes.contains(params.FOCUS_MODE_FIXED))
params.setFocusMode(params.FOCUS_MODE_FIXED);
}
mCamera.setParameters(params);
cameraOpened = true;
}catch (Exception e){
cameraOpened = false;
e.printStackTrace();
}
}
private void turnOnFlashlight(){
flashlightOn = true;
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(params);
}
private void turnOffFlashlight(){
flashlightOn = false;
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params);
}
它在大多数手机上运行良好,但我无法在 xperia Z5 上运行。我没有 Z5 进行测试,所以我只能从用户响应中知道。所以我想问一下是否有任何其他(最好是可行的)方法来打开 Xperia Z5 上的手电筒。
感谢转发
【问题讨论】:
-
尝试添加
mCamera.setPreviewTexture(new SurfaceTexture(0));,这是我必须为某些设备添加的内容。我不知道您的setPreviewDisplay是否已经做了类似的事情(编辑:好的,没有实际的测试设备,这是牵强的,抱歉)
标签: android surfaceview flashlight sony-xperia