| 
					
				 | 
			
			
				@@ -7,19 +7,20 @@ import android.util.Log 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.view.View 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import android.widget.Toast 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import androidx.appcompat.app.AppCompatActivity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import androidx.camera.core.Camera 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import androidx.camera.core.CameraSelector 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import androidx.camera.core.ImageCapture 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import androidx.camera.core.Preview 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import androidx.camera.core.* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import androidx.camera.lifecycle.ProcessCameraProvider 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import androidx.core.app.ActivityCompat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import androidx.core.content.ContextCompat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import androidx.lifecycle.lifecycleScope 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.face.sdk.FaceDetTrack 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.face.sdk.FaceInterface 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.face.sdk.FaceParam 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ethan.psbc.R 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ethan.psbc.commons.IViewOnNoDoubleClickListener 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ethan.psbc.databinding.DialogValidateFaceBinding 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.lxj.xpopup.impl.PartShadowPopupView 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import kotlinx.coroutines.launch 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.nio.ByteBuffer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.concurrent.ExecutorService 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.concurrent.Executors 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -42,6 +43,9 @@ class DialogValidateFace( val mContext: Context) : PartShadowPopupView(mContext) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private var preview: Preview? = null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private var imageCamera: ImageCapture? = null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private lateinit var camera: Camera //相机对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private lateinit   var imageAnalysis:ImageAnalysis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private val licence="NDYyNzA5NGE3MTUwN2RlOTdkYWFmNDU1MjkzOWE5NDU1ZTcxOTJjd2F1dGhvcml6Zdzn5ebj5+fk/OXm5+fg5ef15efn5+bj4Mfl4OXm5uvliObm6+Xm5uuR5ebm6+Xm5qLr5ebm6+Xmrubg5ufr5+v95+vn4OTk59Dk5ubr5+vn9uvn5+fn4uX+5A==" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     override fun onCreate() { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -62,6 +66,9 @@ class DialogValidateFace( val mContext: Context) : PartShadowPopupView(mContext) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       val  cameraSelector: CameraSelector =CameraSelector.Builder().requireLensFacing(CameraSelector.LENS_FACING_BACK).build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         cameraExecutor = Executors.newSingleThreadExecutor() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         val cameraProviderFuture = ProcessCameraProvider.getInstance(mContext) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         cameraProviderFuture.addListener({ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -77,6 +84,43 @@ class DialogValidateFace( val mContext: Context) : PartShadowPopupView(mContext) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         imageAnalysis = ImageAnalysis.Builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .build() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            imageAnalysis.setAnalyzer(cameraExecutor) { imageProxy -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                val planes: Array<ImageProxy.PlaneProxy> = imageProxy.planes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                val buffer: ByteBuffer = planes[0].buffer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                val data: ByteArray = ByteArray(buffer.capacity()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                buffer.rewind() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                buffer.get(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Log.d("demo", "正在识别图像信息") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                FaceDetTrack.getInstance() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                val ret: Int = FaceDetTrack.cwCreateDetHandle("", licence) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (ret >= FaceInterface.cw_errcode_t.CW_UNKNOWN_ERR) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Log.d("demo", "启用识别程序SDK失败") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Log.d("demo", "启用识别程序SDK成功") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    val faceParam = FaceParam() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    FaceDetTrack.cwGetFaceParam(ret, faceParam) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    faceParam.minSize = 30 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    faceParam.maxSize = 400; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    FaceDetTrack.cwSetFaceParam(ret, faceParam, ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                imageProxy.close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 cameraProvider?.unbindAll()//先解绑所有用例 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 camera = cameraProvider?.bindToLifecycle( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -84,6 +128,7 @@ class DialogValidateFace( val mContext: Context) : PartShadowPopupView(mContext) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     cameraSelector, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     preview, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     imageCamera, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    imageAnalysis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 )!!//绑定用例 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } catch (e: Exception) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |