Android指纹识别的简单用法

来源:互联网 发布:ubuntu禁用nouveau 编辑:程序博客网 时间:2024/03/29 09:41

指纹识别

Android指纹识别是在Android6.0(API23)之后加入的新特性,接口都在andoid.hardware.fingterprint包下,其中总共只有4个类,下面是简单的介绍一下;

FingerprintManger:主要用来协调管理和访问指纹识别硬件设备;
new FingerprintManager.AuthenticationCallback:这是一个回调接口,当指纹认证后系统会回调这个接口通知指纹认证的结果;
new FingerprintManager.AuthenticationResult:这是一个表示认证结果的类,会在回调接口中以参数给出 ;
FingerprintManager.CryptoObject这是一个加密的对象类,用来保证认证的安全性。

需要添加的权限:

<uses-permission android:name="android.permission.USE_FINGERPRINT" />

开启扫描接口只需要调用FingerprintManger的authenticate方法即可,但是在此之前我们还有一些东西要做;


获取FingerprintManger的引用对象 :

manager = (FingerprintManager) this.getSystemService(Context.FINGERPRINT_SERVICE);//获取钥匙管理者,后面用来获取用户是否开启安全模式            mKeyManager = (KeyguardManager) this.getSystemService(Context.KEYGUARD_SERVICE);

在Android中使用指纹识别必须要在设备处于安全模式,即开启了锁屏密码,否则是不可以使用的;

//这里是判断是否添加权限以及设备是否支持指纹识别if (ActivityCompat.checkSelfPermission(this, Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) {                Toast.makeText(this, "没有指纹识别权限", Toast.LENGTH_SHORT).show();} //判断硬件是否支持指纹识别            if (!manager.isHardwareDetected()) {                Toast.makeText(this, "没有指纹识别模块", Toast.LENGTH_SHORT).show();}//判断 是否开启锁屏密码            if (!mKeyManager.isKeyguardSecure()) {                Toast.makeText(this, "没有开启锁屏密码", Toast.LENGTH_SHORT).show();} //判断是否有指纹录入,没有的话只能去设置里面自己去录入了            if (!manager.hasEnrolledFingerprints()) {                Toast.makeText(this, "没有录入指纹", Toast.LENGTH_SHORT).show();}

到这里就可以开启扫描接口了,这里有一点,这里介绍一下authenticate方法中的参数;
第一个参数需要传入FingerprintManager.CryptoObject加密对象,但是在这里我是没有使用加密的,所以直接是设定的为null;
第二个参数是传入一个CancellationSignal对象,它提供了取消操作的功能,创建也很简单,使用 new CancellationSignal() 就可以了;
第三个参数可以不用理会,传入0就好(其实我也不知道具体作用 囧);
第四个参数就是回调接口了,就是上面提到的FingerprintManager.AuthenticationCallback()接口,提供识别成功失败等操作。


manager.authenticate(cryptoObject, mCancellationSignal, 0, new FingerprintManager.AuthenticationCallback() {            @Override            public void onAuthenticationError(int errorCode, CharSequence errString) {                // 验证出错回调 指纹传感器会关闭一段时间,在下次调用authenticate时,会出现禁用期(时间依厂商不同30,1分都有)                Toast.makeText(MainActivity.this, errString, Toast.LENGTH_SHORT).show();                showAuthenticationScreen();            }            @Override            public void onAuthenticationHelp(int helpCode, CharSequence helpString) {                // 验证帮助回调                Toast.makeText(MainActivity.this, helpString, Toast.LENGTH_SHORT).show();            }            @Override            public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {                Toast.makeText(MainActivity.this, "指纹识别成功", Toast.LENGTH_SHORT).show();                //识别成功关闭指纹验证                if (mCancellationSignal != null) {                    mCancellationSignal.cancel();                    mCancellationSignal = null;                }            }            @Override            public void onAuthenticationFailed() {                // 验证失败  指纹验证失败后,指纹传感器不会立即关闭指纹验证,系统会提供5次重试的机会,即调用5次onAuthenticationFailed后,才会调用onAuthenticationError                Toast.makeText(MainActivity.this, "指纹识别失败", Toast.LENGTH_SHORT).show();            }        }, null);

到这里就可以简单的使用指纹识别功能了,因为还没有涉及到指纹加密;关于加密已经有很多好的博客了,我也还在研究中。

- Demo下载

原创粉丝点击