From 17692267eea4adb77e93363ac27f1caff5f006ae Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期一, 05 六月 2023 09:11:43 +0800
Subject: [PATCH] 2023年06月05日09:11:31

---
 app/src/main/java/com/hdl/photovoltaic/utils/FlashLightUtils.java |   41 +++++++++++++++++++++++++++++++++++++++--
 1 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/FlashLightUtils.java b/app/src/main/java/com/hdl/photovoltaic/utils/FlashLightUtils.java
index 3ff26b5..eb8b8e0 100644
--- a/app/src/main/java/com/hdl/photovoltaic/utils/FlashLightUtils.java
+++ b/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();
+        }
+    }
+
+
 }
 

--
Gitblit v1.8.0