Browse Source

:seedling: 人脸感应识别外扩罩

everywindchase 9 months ago
parent
commit
b67bdfcd19

+ 17 - 2
app/src/main/java/com/ethan/psbc/ui/dialogs/DialogValidateFace.kt

@@ -30,6 +30,7 @@ import com.ethan.psbc.commons.IViewOnNoDoubleClickListener
 import com.ethan.psbc.databinding.DialogValidateFaceBinding
 import com.ethan.psbc.managers.impls.ImplFaceManager
 import com.ethan.psbc.managers.impls.retrofit.INetworkMain
+import com.ethan.psbc.ui.widget.CircleProgressView
 import com.lxj.xpopup.impl.FullScreenPopupView
 import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
 import io.reactivex.rxjava3.observers.DisposableSingleObserver
@@ -82,8 +83,11 @@ class DialogValidateFace( mContext: Context) : FullScreenPopupView(mContext), IV
         this.faceHandleRet=faceHandleRet
         mBinding.mPreviewView.scaleType=PreviewView.ScaleType.FIT_CENTER
         runCamera(this, mBinding.mPreviewView, faceHandleRet, context = context)
-        //mBinding.mPreviewView.bringToFront()
+
         mBinding.takePhoto.setOnClickListener(this)
+        var circle:View=CircleProgressView(context = context)
+        circle.id=R.id.faceCircle
+        mBinding.cameraLayoutc.addView(circle)
     }
 
 
@@ -285,18 +289,29 @@ class DialogValidateFace( mContext: Context) : FullScreenPopupView(mContext), IV
 
                             if (faceDetRet >= FaceInterface.cw_errcode_t.CW_UNKNOWN_ERR) {
                                 Log.d("demo", "检测到人脸异常:${faceDetRet}" )
+                                var faceCircle= findViewById<CircleProgressView>(R.id.faceCircle)
+                                faceCircle.setProgress(100)
+                                faceCircle.setProgress(0)
                             }else  if(faceDetRet<1){
                                 Log.d("demo", "未检测到人脸:${faceDetRet}" )
                                 context.lifecycleScope.launch {
                                     Toast.makeText(context, "未检测到人脸:${faceDetRet}", Toast.LENGTH_SHORT).show()
                                 }
-
+                                var faceCircle= findViewById<CircleProgressView>(R.id.faceCircle)
+                                faceCircle.setProgress(100)
+                                faceCircle.setProgress(0)
                             }else   if(faceDetRet>1){
                                 Log.d("demo", "测到人脸数量大于1" )
                                 context.lifecycleScope.launch {
                                     Toast.makeText(context, "测到人脸数量大于1", Toast.LENGTH_SHORT).show()
                                 }
+                                var faceCircle= findViewById<CircleProgressView>(R.id.faceCircle)
+                                faceCircle.setProgress(100)
+                                faceCircle.setProgress(0)
                             }else{
+                                var faceCircle= findViewById<CircleProgressView>(R.id.faceCircle)
+                                faceCircle.setProgress(100)
+
                                 Log.d("demo", "检测到人脸" )
                                 val btFeature=ByteArray(iFeaLen)
                                 FaceRecog.cwGetFaceFeature(handle,pFaceBuffer[0].alignedData,pFaceBuffer[0].alignedW,

+ 1 - 0
app/src/main/java/com/ethan/psbc/ui/widget/CircleProgressView.kt

@@ -33,6 +33,7 @@ class CircleProgressView(context: Context) : View(context) {
     }
 
 
+
     override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
         super.onMeasure(widthMeasureSpec, heightMeasureSpec)
     }

+ 4 - 1
app/src/main/res/layout/dialog_validate_face.xml

@@ -9,7 +9,7 @@
 
 
     <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/camera_layout"
+        android:id="@+id/camera_layoutc"
         android:layout_width="400dp"
         android:layout_height="480dp"
         android:gravity="center"
@@ -21,6 +21,7 @@
 
 
         <!--相机预览界面-->
+
         <androidx.camera.view.PreviewView
             android:id="@+id/mPreviewView"
             android:layout_width="0dp"
@@ -38,6 +39,8 @@
 
 
 
+
+
 <!--            <com.ethan.psbc.ui.widget.CircleProgressView-->
 <!--                android:id="@+id/circle"-->
 <!--                android:layout_width="match_parent"-->

+ 1 - 0
app/src/main/res/values/ids.xml

@@ -3,4 +3,5 @@
     <item name="view_tag_param_1" type="id" />
     <item name="view_tag_no_double_click_1" type="id" />
     <item name="view_tag_no_double_click_2" type="id" />
+    <item name="faceCircle" type="id" />
 </resources>