HandUnlockCheckActivity.kt 9.48 KB
Newer Older
1
package com.yidianling.user.safePrivate
konghaorui committed
2 3 4 5

import android.text.TextUtils
import android.widget.TextView
import com.ydl.ydl_image.module.GlideApp
6 7 8 9 10 11
import com.ydl.ydlcommon.base.BaseActivity
import com.ydl.ydlcommon.bean.StatusBarOptions
import com.ydl.ydlcommon.utils.ActivityManager
import com.ydl.ydlcommon.view.CircleImageView
import com.ydl.ydlcommon.view.dialog.CommonDialog
import com.ydl.ydlcommon.view.shoushi.Lock9View
konghaorui committed
12
import com.yidianling.common.tools.ToastUtil
13 14 15 16 17
import com.yidianling.user.LoginUtils
import com.yidianling.user.R
import com.yidianling.user.UserHelper
import com.yidianling.user.route.UserIn
import com.yidianling.user.ui.login.RegisterAndLoginActivity
konghaorui committed
18 19 20 21 22 23

/**
 * 手势解锁验证界面(也可验证指纹)
 */
class HandUnlockCheckActivity : BaseActivity(), android.view.View.OnClickListener {
    override fun layoutResId(): Int {
24
        return R.layout.user_activity_hand_unlock
konghaorui committed
25 26
    }

27 28 29 30
    override fun getStatusViewOptions(): StatusBarOptions {
        return StatusBarOptions(true,true)
    }

konghaorui committed
31 32 33 34 35 36 37 38 39
    override fun initDataAndEvent() {
        isFromBackground = intent.getBooleanExtra("isFromBackground", false)

        tipTxt = findViewById<TextView>(R.id.text_tip)

        if (checkoutFingerPrint()) {

        } else {
            if (!isFromBackground) {
konghaorui committed
40
                UserIn.splashIntent(this)
konghaorui committed
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
            }
            finish()
            return
        }

        //初始化手势解锁
        init()
    }

    //是否来自于后台启动验证
    var isFromBackground = false

    //最多错误次数5次
    var error_num = 5

    var tipTxt: android.widget.TextView? = null

    var lock9: Lock9View? = null

    var isFinger: Boolean = false
    //头像
    var imgHead: CircleImageView? = null
    //忘记手势密码
    var textForget: android.widget.TextView? = null
    //切换登录
    var textLogin: android.widget.TextView? = null


    override fun onResume() {
        super.onResume()
        if (error_num < 1) {
            //错误次数太多 验证账号
            CommonDialog(mContext)
                    .setMessage(FingerPrintUtil.errorLogin)
                    .setRightClick("确定") {
                        //跳转登录
                        RegisterAndLoginActivity.start(this@HandUnlockCheckActivity)
                    }
                    .setCancelAble(false)
                    .show()
        }
    }

    override fun onDestroy() {
        super.onDestroy()
    }

    //检查是否开启指纹或手势密码
    private fun checkoutFingerPrint(): Boolean {
        //判断是否有设置指纹或手势解锁
        val finger = FingerPrintUtil.Companion.instance().fingerPrintIsOpen()
        var hand: Boolean = !FingerPrintUtil.Companion.instance().getHandPass().equals("")

        //判断本地是否有uid和acessToken
        if (!UserHelper.isLogin()) {
            return false
        }
        if (finger && hand) {
            //验证指纹与手势同时进行
            //跳转手势解锁界面并监听指纹
            isFinger = true
            return true
        } else if (finger && !hand) {
            //进入指纹解锁界面
            val intent = android.content.Intent(mContext, FingerPrintCheckActivity::class.java)
            intent.putExtra("isFromBackground", isFromBackground)
            startActivity(intent)
            finish()
            return true
        } else return !finger && hand
    }

    fun init() {
        lock9 = findViewById<Lock9View>(R.id.lock9View)
        //头像
        imgHead = findViewById<CircleImageView>(R.id.head_img)
        var head = UserHelper.getUserInfo()?.userInfo?.head
        if (!TextUtils.isEmpty(head)) {
119 120 121
            imgHead?.let {
                GlideApp.with(mContext).load(head).into(it)
            }
konghaorui committed
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
        }
        //忘记手势密码
        textForget = findViewById<TextView>(R.id.text_forget)
        //切换登录
        textLogin = findViewById<TextView>(R.id.text_login)
        textForget?.setOnClickListener(this)
        textLogin?.setOnClickListener(this)

        //设置正确密码
        lock9?.setSuccessPass(FingerPrintUtil.instance().getHandPass())
        lock9?.setCallBack(object : Lock9View.CallBack {
            override fun onStart() {

            }

            override fun onFinish(password: String) {

                if (password.length < 4) {
                    ToastUtil.toastShort("连接点不能少于4个")
                    return
                }

                var pass: String = FingerPrintUtil.Companion.instance().getHandPass()
                if (pass.equals(password)) {
                    //解锁成功
                    FingerPrintUtil.instance().setCurrentUnLockTime(System.currentTimeMillis())
                    if (!isFromBackground) {
konghaorui committed
149
                        UserIn.splashIntent(this@HandUnlockCheckActivity)
konghaorui committed
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
                    }
                    finish()
                } else {
                    error_num--
                    if (error_num < 0) {
                        error_num = 0
                    }
                    tipTxt?.setText("手势错误,剩余尝试机会" + error_num + "次")
                    if (error_num < 1) {
                        //错误次数太多 验证账号
                        LoginUtils.logout()
                        FingerPrintUtil.instance().setFingerStatus(false)
                        FingerPrintUtil.instance().setHandPassword("")
                        CommonDialog(mContext)
                                .setMessage(FingerPrintUtil.errorLogin)
                                .setRightClick("确定") {
                                    //跳转登录
                                    ActivityManager.finishAll()
                                    RegisterAndLoginActivity.start(this@HandUnlockCheckActivity)
                                }
                                .setCancelAble(false)
                                .show()
                    }
                }
            }
        })

        if (isFinger) {

            //如果系统指纹功能被关闭(关闭状态下指纹会被清除的),则提示
            if (FingerPrintUtil.instance().isHaveFingerPrint() ?: false == false) {
                //锁屏密码已关闭
                CommonDialog(mContext)
                        .setMessage("\n您的指纹信息发生变更,请在手机中重新添加指纹后返回解锁,或切换登录方式")
                        .setRightClick("确定") {
                        }
                        .setCancelAble(false)
                        .show()
                return
            }

            var dia = CommonDialog(mContext)
192
                    .setImageCenter(R.drawable.user_lock_ico_zhiwen)
konghaorui committed
193 194 195 196 197 198 199 200 201 202
                    .setMessage("验证手机已有指纹")
                    .setLeftOnclick("取消") {
                        //停止指纹监听
                        FingerPrintUtil.instance().cancelFingerListener()
                    }
                    .setCancelAble(false)
            dia?.show()
            //判断系统指纹是否被禁用
            if (!FingerPrintUtil.getFingerPrintIsAviable()) {
                if (dia != null) {
konghaorui committed
203
                    dia.setMessage(FingerPrintUtil.errorMoreMessage).setMessageColor(R.color.platform_price_color)
konghaorui committed
204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
                }
                return
            }

            FingerPrintUtil.Companion.instance().startFingerPrint(object : FingerPrintUtil.FingerCallback {
                override fun onAuthenticationError() {
                    tipTxt?.text = "请使用手势解锁"
                    //关闭指纹监听
                    FingerPrintUtil.instance().cancelFingerListener()//关闭指纹监听
                    if (dia != null) {
                        if (!mContext.isFinishing) {
                            dia.dismiss()
                        }
                    }
                }

                override fun onAuthenticationSucceeded() {
                    //解锁成功
                    FingerPrintUtil.instance().setCurrentUnLockTime(System.currentTimeMillis())
                    if (!isFromBackground) {
konghaorui committed
224
                        UserIn.splashIntent(this@HandUnlockCheckActivity)
konghaorui committed
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
                    }
                    //关闭手势解锁页面与指纹解锁页面
//                    EventBus.getDefault().post(FinishActivityEvent(FingerPrintCheckActivity::class.simpleName))
//                    EventBus.getDefault().post(FinishActivityEvent(HandUnlockCheckActivity::class.simpleName))
                    if (dia != null) {
                        if (!mContext.isFinishing) {
                            dia.dismiss()
                        }
                        dia = null
                    }
                    finish()
                }

                override fun onAuthenticationFailed() {
                    if (dia != null) {
konghaorui committed
240
                        dia.setMessage(FingerPrintUtil.errorMessage).setMessageColor(R.color.platform_price_color)
konghaorui committed
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269
                        //设置抖动动画
                        dia.setMessageShake(true)
                    }
                }

            })
        }
    }

    override fun onClick(v: android.view.View) {
        when (v.id) {
            R.id.text_forget -> {
                //忘记手势
                CheckPasswordActivity.startActivity(mContext)
//                finish()
            }
            R.id.text_login -> {
                //切换登录
                RegisterAndLoginActivity.start(this)
//                finish()
            }
        }
    }

    override fun onBackPressed() {

    }

}