| 
					
				 | 
			
			
				@@ -13,6 +13,8 @@ import android.content.pm.PackageManager.PERMISSION_GRANTED 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.net.Uri 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.os.Build 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.os.Bundle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import android.os.Handler 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import android.os.Looper 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.provider.Settings 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.util.Log 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.util.Size 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -30,6 +32,7 @@ import androidx.constraintlayout.widget.ConstraintLayout 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import androidx.core.app.ActivityCompat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import androidx.core.content.ContextCompat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import androidx.lifecycle.LifecycleOwner 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import androidx.lifecycle.lifecycleScope 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xuexiang.xui.XUI 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import jx.cn.escort.R 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -37,6 +40,8 @@ import jx.cn.escort.databinding.ActivityActionTaskHandleBinding 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import jx.cn.escort.extension.ExtensionBinding.Companion.binding 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import jx.cn.escort.ui.widget.CircleProgressView 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import jx.cn.escort.utils.ActivityUtils 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kotlinx.coroutines.delay 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kotlinx.coroutines.launch 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.koin.core.component.KoinComponent 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.koin.core.component.inject 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.concurrent.ExecutorService 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -57,6 +62,7 @@ class ActionTaskHandActivity : AppCompatActivity(), KoinComponent { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private var imageCamera: ImageCapture? = null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private lateinit var camera: Camera //相机对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private lateinit   var imageAnalysis: ImageAnalysis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private lateinit  var circle:CircleProgressView 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     override fun onCreate(savedInstanceState: Bundle?) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -77,8 +83,9 @@ class ActionTaskHandActivity : AppCompatActivity(), KoinComponent { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 val li = LayoutInflater.from(this@ActionTaskHandActivity) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 val inflate = li.inflate(jx.cn.escort.R.layout.layout_task_face,null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 val cameralayoutc = inflate.findViewById<ConstraintLayout>(jx.cn.escort.R.id.camera_layoutc) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var circle:View= CircleProgressView(this@ActionTaskHandActivity) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //circle.id= androidx.camera.core.R.id.faceCircle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                circle= CircleProgressView(this@ActionTaskHandActivity) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+               // circle.id= androidx.camera.core.R.id.faceCircle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                circle.bringToFront() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 cameralayoutc.addView(circle) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 val dialog = MaterialDialog.Builder(this@ActionTaskHandActivity) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .customView(inflate, true) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -87,7 +94,7 @@ class ActionTaskHandActivity : AppCompatActivity(), KoinComponent { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             if( PackageManager.PERMISSION_GRANTED!= ContextCompat.checkSelfPermission(this@ActionTaskHandActivity    , Manifest.permission.CAMERA)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                ActivityCompat.requestPermissions(this@ActionTaskHandActivity , arrayOf(Manifest.permission.CAMERA),100) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                ActivityCompat.requestPermissions(this@ActionTaskHandActivity  , arrayOf(Manifest.permission.CAMERA),100) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 //打开自定义授权弹窗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -116,13 +123,23 @@ class ActionTaskHandActivity : AppCompatActivity(), KoinComponent { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 //弹窗回调完再打开相机 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              var     mpreview=  inflate.findViewById<PreviewView>(R.id.mPreviewView) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 //打开相机 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                runCamera(this@ActionTaskHandActivity,cameralayoutc.findViewById(R.id.mPreviewView) , context = this@ActionTaskHandActivity) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                               runCamera(this@ActionTaskHandActivity,mpreview , context = this@ActionTaskHandActivity) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                dialog.show() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                dialog.dismissListener(object:DialogInterface.OnDismissListener{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    override fun onDismiss(dialog: DialogInterface?) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (preview != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            cameraProvider?.unbindAll() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            preview = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }).show() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //检查手机相机权限 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -185,10 +202,26 @@ class ActionTaskHandActivity : AppCompatActivity(), KoinComponent { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             imageAnalysis.setAnalyzer(cameraExecutor) { imageProxy -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    Log.d("ActionTask", "图片格式${imageProxy.format}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Log.d("ActionTask", "图片格式${imageProxy.format}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 定义一个Runnable,它将被重复执行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                lifecycleScope.launch { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    circle.setProgress(60) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    delay(5000) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    circle.setProgress(80) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    delay(5000) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    circle.setProgress(100) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 cameraProvider?.unbindAll()//先解绑所有用例 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 camera = cameraProvider?.bindToLifecycle( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -217,13 +250,13 @@ class ActionTaskHandActivity : AppCompatActivity(), KoinComponent { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         camera.cameraInfo.cameraState.observe(lifecycleOwner) { value -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             when (value.type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 CameraState.Type.OPEN         ->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    Log.d("demo", "相机正在打开中" ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Log.d("ActionTask", "相机正在打开中" ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                CameraState.Type.PENDING_OPEN -> Log.d("demo", "相机待打开" ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                CameraState.Type.OPENING      -> Log.d("demo", "相机已打开" ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                CameraState.Type.CLOSING      ->Log.d("demo", "相机关闭中" ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                CameraState.Type.CLOSED       -> Log.d("demo", "相机已关闭" ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                CameraState.Type.PENDING_OPEN -> Log.d("ActionTask", "相机待打开" ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                CameraState.Type.OPENING      -> Log.d("ActionTask", "相机已打开" ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                CameraState.Type.CLOSING      ->Log.d("ActionTask", "相机关闭中" ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                CameraState.Type.CLOSED       -> Log.d("ActionTask", "相机已关闭" ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 |