FLASH_MODE_TORCH 和 FLASH_MODE_ON 有啥区别

Posted

技术标签:

【中文标题】FLASH_MODE_TORCH 和 FLASH_MODE_ON 有啥区别【英文标题】:what is the difference between FLASH_MODE_TORCH AND FLASH_MODE_ONFLASH_MODE_TORCH 和 FLASH_MODE_ON 有什么区别 【发布时间】:2014-06-13 18:03:54 【问题描述】:

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

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

【问题讨论】:

【参考方案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.");

【讨论】:

我现在正在使用此代码,它适用于大多数设备,但不适用于 Galaxy Ace 等三星设备。我想知道“Flash_mode_on”是否适用于所有设备? 你帮了我很多。当我在更多设备上对其进行测试时,我会将其标记为已接受的答案。谢谢,【参考方案2】:

没有单一的方法可以确保闪存在每台设备上都能正常工作。您必须添加大量特定于制造商和设备的代码。

Dwhanik 的回答是我将如何处理您所说的具体问题。首先检查FLASH_MODE_TORCH,然后尝试FLASH_MODE_ON。但这并不意味着您会在每台设备上都获得闪光灯。

【讨论】:

那么除了 FLASH_MODE_ON 和 FLASH_MODE_TORCH 之外,还有其他方法可以开启 flash 吗?【参考方案3】:
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) 
    

【讨论】:

您能否添加一个解释,以说明这是如何回答问题的?

以上是关于FLASH_MODE_TORCH 和 FLASH_MODE_ON 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

Android 2.1 的 Camera.Parameters.FLASH_MODE_TORCH 替代品

如何以编程方式在 Lollipop Android 中打开 FlashLight

Camera setParameters(), getParameters(),unlock()三个方法之间的限制关系

我可以更改 Android 设备的 LED 强度吗?

Galaxy Nexus 上的 LED 手电筒可由啥 API 控制?

关于NOR-FLASH和NAND-fLASH的区别_A