Java 在android中以不同模式打开手电筒
下面的代码会在不支持torch的摩托罗拉razor等android设备上运行吗?有没有人能测试一下有没有这样的电话,请告诉我 提前谢谢Java 在android中以不同模式打开手电筒,java,android,flash,parameters,flashlight,Java,Android,Flash,Parameters,Flashlight,下面的代码会在不支持torch的摩托罗拉razor等android设备上运行吗?有没有人能测试一下有没有这样的电话,请告诉我 提前谢谢 if (!isFlashOn) { if (camera == null || params == null) { return; } List<String> flashModes = params.getSupportedF
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;
}
}
它适用于摩托罗拉g和galaxy S4(支持火炬)是,如果您检查该设备是否支持火炬。但是你可能会遇到一个在安卓系统中非常普遍的特定于设备的问题。您可以在帖子中找到更多信息。如果您的设备支持不同的闪光灯模式,您可以在不同的模式下打开闪光灯。您可以从这个开源相机代码中获取代码。
您应该检查受支持的闪存模式以避免出现异常,setFlashMode方法检查受支持的模式,但使用此方法进行检查有助于在UI上设置闪存模式按钮或视图
public List<String> getSupportedFlashModes() {
return params.getSupportedFlashModes();
}
但您的设备可能无法使用这些闪存模式中的某些或任何一种,请在使用前进行检查。
从闪烁模式中选择后,可以使用此方法设置闪烁模式
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);
}
}
@Kevin TeslaCoil既然你有这方面的经验,你能看一看吗?我想如果有人能提供4种可能的解决方案来打开闪光灯<代码>红眼、自动、打开、手电筒代码>详细谢谢,虽然一切都很混乱,功能太多,但它确实包含了我要找的!
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);
}
}