最近做了一个功能,需要添加指纹识别;我们都知道指纹识别接口是Google在6.0及以后才提供了相关的接口,所以今天我们讨论的都是基于Android API开发版本大于等于23(6.0)且硬件支持的机型。其他不做讨论。

下面就来看看实现指纹识别究竟有多么简单,首先我先说一下实现方式,第一种是通过FingerPrintManager方式,还有一种是通过v4包的FingerPrintManagerCompat方式。下面就来看看实现流程:

(1)方式1

  • 第一步:获取FingerPrintManager实例
 FingerprintManager manager;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {manager = this.getSystemService(FingerprintManager.class);//方式1
//manager=(FingerprintManager)this.getSystemService(Context.FINGERPRINT_SERVICE);//方式2}
  • 第二步:开启指纹识别并添加识别结果回调接口
 manager.authenticate(null, null, 0, new FingerprintManager.AuthenticationCallback() {@Overridepublic void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {super.onAuthenticationSucceeded(result);Log.e(TAG, "FingerprintManager: 指纹识别成功");}@Overridepublic void onAuthenticationFailed() {super.onAuthenticationFailed();Log.e(TAG, "FingerprintManager: 指纹识别失败");}}, null);

(2)方式2

  • 第一步:获取FingerPrintManagerCompat实例
FingerprintManagerCompat managerCompat;
managerCompat = FingerprintManagerCompat.from(this);
  • 第二步:开启指纹识别并添加结果回调接口
 managerCompat.authenticate(null, 0, null, new FingerprintManagerCompat.AuthenticationCallback() {@Overridepublic void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) {super.onAuthenticationSucceeded(result);Log.e(TAG, "FingerprintManagerCompat: 指纹识别成功");}@Overridepublic void onAuthenticationFailed() {super.onAuthenticationFailed();Log.e(TAG, "FingerprintManagerCompat: 指纹识别失败");}}, null);

可见,两种方式很相似也很简单。更多关于其中参数和接口的细节可参见官方说明。注意需要添加一下权限,当然这个官方说明都是有的。

 示例代码:

package com.hfut.operationfingerprint;import android.Manifest;
import android.app.KeyguardManager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Build;
import android.os.CancellationSignal;
import android.support.annotation.RequiresApi;
import android.support.v4.app.ActivityCompat;
import android.support.v4.hardware.fingerprint.FingerprintManagerCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;/*** @author why* @date 2019-1-8 11:50:02*/
public class SimplifyActivity extends AppCompatActivity {FingerprintManagerCompat managerCompat;FingerprintManager manager;private static final String TAG = "SimplifyActivitywhy";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_simplify);initData();}private void initData() {managerCompat = FingerprintManagerCompat.from(this);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//6.0及以上manager = this.getSystemService(FingerprintManager.class);//manager= (FingerprintManager) this.getSystemService(Context.FINGERPRINT_SERVICE);}}/*** Test fingerprint identification** @param view*/@RequiresApi(api = Build.VERSION_CODES.M)public void fingerprintTest(View view) {if (isSatisfactionFingerprint()) {if (managerCompat.hasEnrolledFingerprints()) {//TODO Start Fingerprint sensor and add result callbackmanagerCompat.authenticate(null, 0, null, new FingerprintManagerCompat.AuthenticationCallback() {@Overridepublic void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) {super.onAuthenticationSucceeded(result);Log.e(TAG, "FingerprintManagerCompat: 指纹识别成功");}@Overridepublic void onAuthenticationFailed() {super.onAuthenticationFailed();Log.e(TAG, "FingerprintManagerCompat: 指纹识别失败");}}, null);} else {Log.d(TAG, "FingerprintManagerCompat: 请先采集指纹");}//            if (manager.hasEnrolledFingerprints()) {
//                //Log.e(TAG, "FingerprintManager: 实现指纹识别" );
//                manager.authenticate(null, null, 0, new FingerprintManager.AuthenticationCallback() {
//                    @Override
//                    public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
//                        super.onAuthenticationSucceeded(result);
//                        Log.e(TAG, "FingerprintManager: 指纹识别成功");
//                    }
//
//                    @Override
//                    public void onAuthenticationFailed() {
//                        super.onAuthenticationFailed();
//                        Log.e(TAG, "FingerprintManager: 指纹识别失败");
//                    }
//                }, null);
//            }
//             else {
//                Log.d(TAG, "fingerprintTest: 请先采集指纹");
//            }}}/*** @return*/public boolean isSatisfactionFingerprint() {//permissionif (ActivityCompat.checkSelfPermission(this, Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) {Toast.makeText(this, "Please grant authorization for fingerprint identification", Toast.LENGTH_LONG).show();return false;}KeyguardManager mKeyguardManager = (KeyguardManager) this.getSystemService(Context.KEYGUARD_SERVICE);if (!mKeyguardManager.isKeyguardSecure()) {Toast.makeText(this, "Please open screen lock", Toast.LENGTH_LONG).show();return false;}return true;}
}

这部分写的很简单,仅仅作为参考作用。

注:欢迎扫码关注

Google官方指纹识别接口最简单调用示例相关推荐

  1. Android指纹识别ui显示,Android9.0指纹识别BiometricPrompt的简单使用

    谷歌在Android 9.0 API版本28,发布了生物信息综合验证的基础 API android.hardware.biometrics.BiometricPrompt.BiometricPromp ...

  2. 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )

    文章目录 一.申请权限 二.申请权限原理对话框 三.引导用户手动设置权限对话框 四.在 AndroidManifest.xml 中配置权限 五.完整代码示例 六.GitHub 地址 一.申请权限 申请 ...

  3. 中通/圆通API接口 PHP 简单封装示例

    圆通 API 接口 - 简单封装 PHP yto.api.php 文件 class YTO {private $_domain = 'http://opentestapi.yto.net.cn/ser ...

  4. 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 最简单用法 | 一行代码搞定权限申请 | 推荐用法 )

    文章目录 一.添加依赖 二.在 AndroidManifest.xml 中配置权限 三.权限申请最简单用法 四.推荐使用的用法 五.GitHub 地址 上一篇博客 [Android 应用开发]Goog ...

  5. Android开发学习—指纹识别系统的原理与使用

    指纹识别是什么? 提到指纹识别我们就要先弄清楚什么事指纹,指纹为何能够做到区别性. 指纹,由于其具有终身不变性.唯一性和方便性,已几乎成为生物特征识别的代名词.指纹是指人的手指末端正面皮肤上凸凹不平产 ...

  6. Android 6.0 指纹识别功能学习(一)----阿冬专栏!!!

    转载自:http://www.cnblogs.com/changyuet/p/5535082.html 由于毕设需要设计增强的身份认证(生物特征认证方式),所以需要学习指纹识别相关的android6. ...

  7. android开发-指纹识别

    在Android 6.0中google终于给Android系统加上了指纹识别的支持,这个功能在iPhone上早就已经实现了,并且在很多厂商的定制的ROM中也都自己内部实现这个功能了,这个功能来的有点晚 ...

  8. Android 6.0指纹识别App开发demo

    在Android 6.0中google终于给android系统加上了指纹识别的支持,这个功能在iPhone上早就已经实现了,并且在很多厂商的定制的ROM中也都自己内部实现这个功能了,这个功能来的有点晚 ...

  9. Android指纹识别,看这一篇就够了

    在Android6.0(Api23)的时候,Android系统加入了指纹识别的api接口,即FingerprintManager,定义了最基础的指纹识别接口.不过,在AndroidP(Api28)的时 ...

最新文章

  1. 寻找阿姆斯特朗数c语言程序,C程序检查阿姆斯特朗数
  2. sklearn快速入门教程:(五)集成学习
  3. 耻辱的时间戳(笑哭)
  4. Activity has leaked window that was originally added 问题解决
  5. 8bit黑白图像的灰度值范围是_浅谈工业CT图像灰度值
  6. dotnetcore+vue+elementUI 前后端分离 三(前端篇)
  7. icache的方面以及使用
  8. 【翻译】ASP.NET 4中的可扩展输出缓存
  9. WSUS 3.0系列之二 补丁分发
  10. python opencv3 —— findContours
  11. select、poll与epoll的优缺点
  12. android 任意剪切view,Android 任意View切圆角
  13. html中的坐标从哪里开始,HTML+CSS入门 页面内跳转到相应位置的3种方法
  14. What's New in Qt 5.5 5.4,以及5.5 所有module
  15. scala 主构造函数_Scala主构造器和辅助构造器
  16. Koa2 洋葱模型 —— compose 串联中间件的四种实现
  17. 对任意合式公式求真值表以及主析取范式和主合取范式(JAVA)
  18. DRS是啥你都不知道?不是吧,不是吧
  19. CIO如何在企业并购中生存
  20. 自己动手搭建网站:域名和云服务器选购

热门文章

  1. Oracle 11g业务用户更改密码后产生大量library cache lock等待
  2. Spring MVC(11):通过 WebSocket 实现前后端全双工通信
  3. ucpaas.class.php,GitHub - uniquejava/ucpaas: 云之讯Nodejs版SDK
  4. 安装pytorch gpu版本
  5. Cocos Creator制作倒计时显示的优化
  6. 齿轮接触应力matlab,LSDYNA的齿轮动力学接触仿真分析.pdf
  7. 电赛分几种_参加电赛需要具备哪些知识呢?
  8. CENTOS 6.2 全新安装无线网卡驱动
  9. Blocks Programming
  10. 内蒙古小肥羊火锅底料制作配方