android Fingerprint 验证

最近一个需求是要验证指纹传感器的可用性(在没有录入指纹时也能验证),所以考虑通过录入指纹来验证传感器的可用性;做个代码的记录方便以后可用。

判断设备是否支持指纹
@RequiresApi(api = Build.VERSION_CODES.M)
    public static FingerprintManager getFingerprintManagerOrNull() {
        if (getApp().getPackageManager().hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) {
            return getApp().getSystemService(FingerprintManager.class);
        } else {
            return null;
        }
    }
开启指纹录入
long auth = this.mFingerprintManager.preEnroll();
byte[] arrayOfByte = getBytes(auth);
for (int i = 0; i < arrayOfByte.length; i++) {
            mToken[(i + 1)] = (byte) arrayOfByte[i];
        }
mEnrollmentCancel = new CancellationSignal();
mFingerprintManager.enroll(mToken, mEnrollmentCancel, 0, UserHandle.myUserId(), new FingerprintManager.EnrollmentCallback() {
            @Override
            public void onEnrollmentError(int errMsgId, CharSequence errString) {
                super.onEnrollmentError(errMsgId, errString);
                Log.v("lmjssjj", "Please try again errMsgId:"+errMsgId+"  errString:"+errString);
            }

            @Override
            public void onEnrollmentHelp(int helpMsgId, CharSequence helpString) {
                super.onEnrollmentHelp(helpMsgId, helpString);
                Log.v("lmjssjj", "helpMsgId:"+helpMsgId+"  helpString:"+helpString);
            }

            @Override
            public void onEnrollmentProgress(int remaining) {
                super.onEnrollmentProgress(remaining);
                Log.v("lmjssjj", "success");
            }
        });

  public byte[] getBytes(long auth)
    {
        byte[] arrayOfByte = new byte[28];
        arrayOfByte[0] = (byte)(byte)(int)(auth & 0xFF);
        arrayOfByte[1] = (byte)(byte)(int)(auth >> 8 & 0xFF);
        arrayOfByte[2] = (byte)(byte)(int)(auth >> 16 & 0xFF);
        arrayOfByte[3] = (byte)(byte)(int)(auth >> 24 & 0xFF);
        arrayOfByte[4] = (byte)(byte)(int)(auth >> 32 & 0xFF);
        arrayOfByte[5] = (byte)(byte)(int)(auth >> 40 & 0xFF);
        arrayOfByte[6] = (byte)(byte)(int)(auth >> 48 & 0xFF);
        arrayOfByte[7] = (byte)(byte)(int)(auth >> 56 & 0xFF);
        arrayOfByte[24] = (byte)0;
        arrayOfByte[25] = (byte)0;
        arrayOfByte[26] = (byte)0;
        arrayOfByte[27] = (byte)2;
        return arrayOfByte;
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值