FLASH_MODE_TORCH和FLASH_MODE_ON之间有什么区别?

时间:2014-04-28 09:08:26

标签: android flashlight

我的应用使用FLASH_MODE_TORCH打开相机LED,但现在有人说FLASH_MODE_TORCH无法正常使用某些三星设备。

我应该使用FLASH_MODE_ON让所有设备都能正常工作吗?(特别是三星设备)

3 个答案:

答案 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) {
    }
}