wjc
2024-12-02 f50e8e60e9da99e4f69d8ab76810dc7e5fb448bc
app/src/main/java/com/hdl/photovoltaic/utils/FlashLightUtils.java
@@ -5,6 +5,7 @@
import android.content.pm.FeatureInfo;
import android.content.pm.PackageManager;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraManager;
import android.os.Build;
import android.hardware.Camera;
@@ -42,7 +43,7 @@
            FeatureInfo[] features = packageManager.getSystemAvailableFeatures();
            for (FeatureInfo featureInfo : features) {
                // 判断设备是否支持闪光灯
                if (packageManager.FEATURE_CAMERA_FLASH.equals(featureInfo.name)) {
                if (PackageManager.FEATURE_CAMERA_FLASH.equals(featureInfo.name)) {
                    if (null == mCamera) {
                        mCamera = Camera.open();
                    }
@@ -58,7 +59,7 @@
    }
    // 关闭手电筒
    public void cloes() {
    public void close() {
        if (!status)    // 如果是已经关闭的状态 不需要打开
        {
            return;
@@ -79,5 +80,41 @@
        }
        status = false; // 记录手电筒为关闭
    }
    /**
     * 手电筒打开或者关闭
     *
     * @param isOpen 打开(true)或者关闭(false)
     */
    public void setOpenOrClose(boolean isOpen) {
        try {
            //获取当前手机所有摄像头设备ID
            String[] ids = manager.getCameraIdList();
            for (String id : ids) {
                CameraCharacteristics c = manager.getCameraCharacteristics(id);
                //查询该摄像头组件是否包含闪光灯
                Boolean flashAvailable = c.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
                /*
                 * 获取相机面对的方向
                 * CameraCharacteristics.LENS_FACING_FRONT 前置摄像头
                 * CameraCharacteristics.LENS_FACING_BACK 后只摄像头
                 * CameraCharacteristics.LENS_FACING_EXTERNAL 外部的摄像头
                 */
                Integer lensFacing = c.get(CameraCharacteristics.LENS_FACING);
                if (flashAvailable != null && flashAvailable
                        && lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_BACK) {
                    //打开或关闭手电筒
                    manager.setTorchMode(id, isOpen);
                    break;
                }
            }
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    }
}