以下代码是否适用于不支持火炬的摩托罗拉剃刀等Android设备?有人可以请你测试是否有这样的手机,请告诉我。
提前致谢!!
if (!isFlashOn) {
if (camera == null || params == null) {
return;
}
List<String> flashModes = params.getSupportedFlashModes();
if(flashModes.contains(Parameters.FLASH_MODE_TORCH)){
try {
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
toggleButtonImage();
isFlashOn = true;
}catch (RuntimeException e) {
}
}
else {
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_ON);
camera.setParameters(params);
camera.startPreview();
toggleButtonImage();
isFlashOn = true;
}
toggleButtonImage();
isFlashOn = true;
}
}
P.S我还应该添加类似的内容:
if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_AUTO))
{
params.setFlashMode(Parameters.FLASH_MODE_AUTO);
camera.setParameters(params);
camera.startPreview();
}
适用于Motorola g和galaxy S4(支持火炬)
答案 0 :(得分:3)
如果设备支持不同的闪光模式,您可以在不同的模式下打开手电筒。您可以从此开源摄像头代码中获取代码。 OPenCamera
答案 1 :(得分:2)
是的,如果您检查该设备是否支持火炬。但是您可能会遇到Android中非常普遍的特定于设备的问题。您可以在this帖子中找到更多信息。
答案 2 :(得分:0)
你应该检查支持的闪存模式没有异常,setFlashMode方法检查支持的模式,但用这种方法检查有助于在UI上设置闪存模式按钮或视图
public List<String> getSupportedFlashModes() {
return params.getSupportedFlashModes();
}
所有Flash模式的总和是:
Camera.Parameters.FLASH_MODE_AUTO, Camera.Parameters.FLASH_MODE_OFF, Camera.Parameters.FLASH_MODE_ON, Camera.Parameters.FLASH_MODE_RED_EYE, Camera.Parameters.FLASH_MODE_TORCH
但您的设备中可能无法使用某些或任何这些闪光模式,请在使用前进行检查。 从闪光模式中选择后,您可以使用此方法设置闪光模式
public synchronized void setFlashMode(String flashMode) {
Camera.Parameters params = mCamera.getParameters();
if (cameraId == Camera.CameraInfo.CAMERA_FACING_BACK && params.getSupportedFlashModes() != null
&& params.getSupportedFlashModes().contains(flashMode)) {
params.setFlashMode(flashMode);
mCamera.setParameters(params);
}
}