Parcourir la source

登录页人脸登录切换到虹软

Frankensteinly il y a 7 mois
Parent
commit
ec17fb6f9d

+ 36 - 23
app/src/main/java/com/grkj/iscs/view/dialog/LoginDialog.kt

@@ -4,16 +4,18 @@ import android.graphics.Bitmap
 import android.view.InputDevice
 import android.view.KeyEvent
 import android.view.View
+import com.grkj.iscs.BusinessManager
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.DialogLoginBinding
 import com.grkj.iscs.extentions.toByteArrays
 import com.grkj.iscs.extentions.toHexStrings
 import com.grkj.iscs.model.vo.card.CardInfoRespVO
 import com.grkj.iscs.model.vo.user.UserInfoRespVO
+import com.grkj.iscs.util.ArcSoftUtil
 import com.grkj.iscs.util.Executor
 import com.grkj.iscs.util.FingerprintUtil
+import com.grkj.iscs.util.ToastUtils
 import com.grkj.iscs.util.log.LogUtil
-import com.grkj.iscs.view.activity.test.face.FaceDetectorHelper
 import com.grkj.iscs.view.base.BaseActivity
 import com.grkj.iscs.view.base.BaseDialog
 import com.grkj.iscs.view.presenter.LoginPresenter
@@ -28,9 +30,6 @@ class LoginDialog(val presenter: LoginPresenter?, val ctx: BaseActivity<*>, priv
         Pair(context.getString(R.string.please_scan_fingerprint), R.mipmap.login_fingerprint),
         Pair(context.getString(R.string.please_swipe_card), R.mipmap.login_card)
     )
-    private val faceDetectorHelper by lazy {
-        FaceDetectorHelper()
-    }
 
     override val viewBinding: DialogLoginBinding
         get() = DialogLoginBinding.inflate(layoutInflater)
@@ -66,20 +65,10 @@ class LoginDialog(val presenter: LoginPresenter?, val ctx: BaseActivity<*>, priv
             mBinding?.tvTip?.text = mPairList[loginType].first
             when (loginType) {
                 0 -> {
-                    faceDetectorHelper.startPreview(ctx, mBinding?.preview!!, false) {
-                        // 注意切换线程
-                        Executor.runOnMain {
-                            mBinding?.preview?.visibility = View.INVISIBLE
-                            faceDetectorHelper.stopDetector()
-                            presenter?.faceLogin(it) { isSuccess, cardInfoRespVO, userInfoRespVO ->
-                                if (isSuccess) {
-                                    dismiss()
-                                }
-                                callBack?.invoke(isSuccess, cardInfoRespVO, userInfoRespVO)
-                            }
-                        }
+                    if (!ArcSoftUtil.isActivated) {
+                        ToastUtils.tip(R.string.face_can_not_process)
                     }
-                    faceDetectorHelper.startDetector()
+                    startFace()
                 }
                 1 -> {
                     FingerprintUtil.init(ctx)
@@ -132,14 +121,38 @@ class LoginDialog(val presenter: LoginPresenter?, val ctx: BaseActivity<*>, priv
         return super.dispatchKeyEvent(event)
     }
 
+    private fun startFace() {
+        ArcSoftUtil.initEngine(context)
+        ArcSoftUtil.initCamera(context, ctx.windowManager, mBinding?.preview!!) {
+            println("haha : ${it == null}")
+            it?.let { itBitmap ->
+                BusinessManager.sendLoadingEventMsg(context.getString(R.string.face_detected_do_login))
+                ArcSoftUtil.stop()
+                presenter?.faceLogin(itBitmap) { isSuccess, cardInfoRespVO, userInfoRespVO ->
+                    BusinessManager.sendLoadingEventMsg(null, false)
+                    if (isSuccess) {
+                        dismiss()
+                    }
+                    callBack?.invoke(isSuccess, cardInfoRespVO, userInfoRespVO)
+                }
+            }
+        }
+    }
+
     override fun dismiss() {
         super.dismiss()
-        if (mLoginType == 3) {
-            mBinding?.etAccount?.text?.clear()
-            mBinding?.etPassword?.text?.clear()
-        } else if (mLoginType == 1) {
-            FingerprintUtil.stop()
-            FingerprintUtil.unInit()
+        when (mLoginType) {
+            0 -> {
+                ArcSoftUtil.stop()
+            }
+            1 -> {
+                FingerprintUtil.stop()
+                FingerprintUtil.unInit()
+            }
+            3 -> {
+                mBinding?.etAccount?.text?.clear()
+                mBinding?.etPassword?.text?.clear()
+            }
         }
     }
 }

+ 1 - 1
app/src/main/res/layout/dialog_login.xml

@@ -32,7 +32,7 @@
         android:layout_width="165dp"
         android:layout_height="146dp">
 
-        <androidx.camera.view.PreviewView
+        <TextureView
             android:id="@+id/preview"
             android:layout_width="match_parent"
             android:layout_height="match_parent"

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

@@ -267,4 +267,5 @@
     <string name="please_return_key_after_unlocking">请上锁员完成解锁后,归还钥匙</string>
     <string name="face_active_fail">人脸识别激活失败</string>
     <string name="face_can_not_process">人脸引擎激活失败,识别暂不可用</string>
+    <string name="face_detected_do_login">检测到人脸,正在登录······</string>
 </resources>