Android-指纹解锁技术

  1. 什么是指纹解锁技术
  2. 指纹解锁技术原理理解
  3. 指纹解锁技术的优势和缺点
  4. 在Android中的应用开发

什么是指纹解锁技术

根据人的指纹来验证是否能够解锁的技术,类似于通过输入密码来解锁,都是通过一定的数字特征来解锁。

指纹解锁技术原理理解

首先说明每个人的每个指纹信息都是独一无二的,皮肤纹路在图案,断点,交叉点上各不相同,通过光学感应读出指纹的图片信息也是独一无二的。

先保存一个人的指纹特征(图片信息根据算法生成的数据),然后再使用时利用这个人的这个指纹特征去和先前保存的指纹特征做对比,对比一致则解锁成功,对比不一致则解锁失败,对比结果并不是100%一样,而可以按照一个比例来判定,比如90%一样,也可以判定为一致,这个可以根据硬件来设定。

指纹解锁技术的优势和缺点

优点:1.使用便捷,直接使用自身的生物特征就可判断能否使用,判别速度快,而输入数字或者拼图解锁是麻烦的并且容易被别人看到。

缺点:1.安全性不高,指纹是可以被收集的,所以一旦别人收集了你的指纹信息,那需要你指纹解锁的东西将非常危险,而且在不注意的情况下很容易被有心的人收集。

在Android中的应用开发

对Android系统来说,指纹解锁是Android6.0才添加的新功能,到Android P系统还会强化指纹解锁的功能,提供越来越便捷的API

android.hardware.fingerprint

可以看到在Android P系统中FingerprintDialog以及其中的包含类将会替代FingerprintManager以及其中包含类。原理应该差不多,封装的更简洁易用。

废话少说,在Android手机中如何开发?

1.在应用AndroidManifest.xml文件中添加权限:
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
2.获取到指纹管理对象的引用:
FingerprintManagerCompat fingerprint = FingerprintManagerCompat.from(this);   //v4包下的API,包装内部已经判断Android系统版本是否大于6.0,这也是官方推荐的方式
FingerprintManager fingerprint2 = (FingerprintManager) getSystemService(Context.FINGERPRINT_SERVICE);  //Android 6.0包下的API

其实指纹对象依次调用三个方法就够了,
第一步

    /**
     * Determine if fingerprint hardware is present and functional.
     * @return true if hardware is present and functional, false otherwise.
     */
    fingerprint.isHardwareDetected(); // 判断设备是否支持指纹解锁

第二步

    /**
     * Determine if there is at least one fingerprint enrolled.
     * @return true if at least one fingerprint is enrolled, false otherwise
     */
    fingerprint.hasEnrolledFingerprints(); //判断设备是否以保存过指纹信息,至少需要保存过一个

第三步

    /**
     * @param crypto object associated with the call or null if none required.    //不太理解,加密指纹特征还是什么,可以不加密置为null
     * @param flags optional flags; should be 0  //设置标记,暂时无用
     * @param cancel an object that can be used to cancel authentication     //取消验证
     * @param callback an object to receive authentication events   //系统认证完成之后,回调该接口
     * @param handler an optional handler for events  //处理callback接口后,界面的处理,默认是主线程handler
     */
    fingerprint.authenticate(crypto, flags,cancel,callback,handler) //验证指纹

再来说明各个参数的实现

    crypto = null;  //可以置为null,愿意了解的人可以参考底部博客和源码
    flags = 0;
    cancel = new CancellationSignal();
    callback = new FingerprintManagerCompat.AuthenticationCallback() {
            @Override
            public void onAuthenticationError(int errMsgId, CharSequence errString) {
                super.onAuthenticationError(errMsgId, errString);
                //验证错误时,回调该方法。当连续验证5次错误时,将会走onAuthenticationFailed()方法
                handler.obtainMessage(1,errMsgId,0).sendToTarget();
            }

            @Override
            public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) {
                super.onAuthenticationSucceeded(result);
                //验证成功时,回调该方法。fingerprint对象不能再验证
                handler.obtainMessage(2).sendToTarget();
            }

            @Override
            public void onAuthenticationFailed() {
                super.onAuthenticationFailed();
                //验证失败时,回调该方法。fingerprint对象不能再验证并且需要等待一段时间才能重新创建指纹管理对象进行验证
                handler.obtainMessage(3).sendToTarget();
            }
        };
     handler = new Handler(getMainLooper()) {   //也可以置为null,系统自动处理
            @Override
            public void handleMessage(Message msg) {
            switch (msg.what) {
                case 1:   //验证错误
                     //todo 界面处理
                    handleErrorCode(msg.arg1);
                    break;
                case 2:   //验证成功
                     //todo 界面处理
                     cancel = null;
                     break;
                case 3:    //验证失败
                     //todo 界面处理
                     cancel = null;
                     break;
                default:
                    super.handleMessage(msg);
          }
          
      };
    //对应不同的错误,可以有不同的操作
    private void handleErrorCode(int code) {
        switch (code) {
            case FingerprintManager.FINGERPRINT_ERROR_CANCELED:
                //todo 指纹传感器不可用,该操作被取消
                break;
            case FingerprintManager.FINGERPRINT_ERROR_HW_UNAVAILABLE:
                //todo 当前设备不可用,请稍后再试
                break;
            case FingerprintManager.FINGERPRINT_ERROR_LOCKOUT:
                //todo 由于太多次尝试失败导致被锁,该操作被取消
                break;
            case FingerprintManager.FINGERPRINT_ERROR_NO_SPACE:
                //todo 没有足够的存储空间保存这次操作,该操作不能完成
                break;
            case FingerprintManager.FINGERPRINT_ERROR_TIMEOUT:
                //todo 操作时间太长,一般为30秒
                break;
            case FingerprintManager.FINGERPRINT_ERROR_UNABLE_TO_PROCESS:
                //todo 传感器不能处理当前指纹图片
                break;
    }
}

感谢以下知识的分享:

指纹识别技术-百度百科
Android6.0指纹解锁demo
Android中的指纹识别
对称加密方式-crypto
非对称加密方式-crypto

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容