我的应用使用FLASH_MODE_TORCH
打开相机LED,但现在有人说FLASH_MODE_TORCH
无法正常使用某些三星设备。
我应该使用FLASH_MODE_ON
让所有设备都能正常工作吗?(特别是三星设备)
答案 0 :(得分:1)
可能会帮助你
Parameters params = null;
if(mCamera != null) {
params = mCamera.getParameters();
if(params != null) {
List<String> supportedFlashModes = params.getSupportedFlashModes();
if(supportedFlashModes != null) {
if(supportedFlashModes.contains(Parameters.FLASH_MODE_TORCH)) {
params.setFlashMode( Parameters.FLASH_MODE_TORCH );
} else if(supportedFlashModes.contains(Parameters.FLASH_MODE_ON)) {
params.setFlashMode( Parameters.FLASH_MODE_ON );
} else mCamera = null;
} else Log.d(TAG, "Camera is null.");
if(mCamera != null) {
Log.d(TAG, "Flash disponibile (" + params.getFlashMode() + ")");
mCamera.setParameters( params );
mCamera.startPreview();
mCamera.autoFocus(null);
} else Log.d(TAG, "Camera is null.");
答案 1 :(得分:1)
没有一种方法可以确保闪存在每台设备上都能正常工作。您必须添加许多特定于制造商和设备的代码。
Dwhanik的回答是我将如何处理你所谈论的具体问题。首先检查FLASH_MODE_TORCH
,然后尝试FLASH_MODE_ON
。但这并不意味着你会在每台设备上获得闪光灯。
答案 2 :(得分:0)
public void Initialize(){
if (this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) {
camManager = (CameraManager) getSystemService(this.CAMERA_SERVICE);
try {
if (camManager.getCameraIdList().length > 0) {
strCameraID=camManager.getCameraIdList()[0];
}
} catch (Exception EX_CAMLIST) {
}
}
}
public void switchLED(String strCemeraID,boolean status){
if(camManager==null || strCemeraID==null)return;
try {
if (strCemeraID.length() > 0) {
camManager.setTorchMode(strCemeraID, status);
}
} catch (Exception EX_CAMERA_TORCH) {
}
}