浅谈Android指纹解锁技术

  

<强>什么是指纹解锁技术

  

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

  

<强>指纹解锁技术原理理解

  

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

  

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

  

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

  

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

  

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

  

<强>在Android中的应用开发

  

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

  

浅谈Android指纹解锁技术

  

android.hardware.fingerprint   

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

  

<强>废话少说,在安卓手机中如何开发?

  

1。在应用AndroidManifest.xml文件中添加权限:

        & lt; uses-permission android: name=" android.permission.USE_FINGERPRINT "/祝辞      

2。获取到指纹管理对象的引用:

        FingerprintManagerCompat指纹=FingerprintManagerCompat.from(这个);//v4包下的API,包装内部已经判断Android系统版本是否大于6.0,这也是官方推荐的方式   FingerprintManager fingerprint2=(FingerprintManager) getSystemService (Context.FINGERPRINT_SERVICE);//Android 6.0包下的API      

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

  

第一步      /* *   *确定指纹存在硬件和功能。   * @return真实如果存在硬件和功能,否则假。   */fingerprint.isHardwareDetected ();//判断设备是否支持指纹解锁之前      

第二步      /* *   *确定至少有>/* *   * @param加密对象的调用或零如果没有要求。//不太理解,加密指纹特征还是什么,可以不加密置为空   * @param标记可选标记;应该是0//设置标记,暂时无用吗   * @param取消一个对象,可以用来取消认证//取消验证   * @param回调对象来接收验证事件//系统认证完成之后,回调该接口   * @param为事件处理程序可选的处理程序//处理调接口后,界面的处理,默认是主线程处理程序   */指纹。验证(加密、旗帜、取消回调处理程序)//验证指纹      再来说明各个参数的实现      密码=零;//可以置为空,愿意了解的人可以参考底部博客和源码   旗帜=0;   取消=new CancellationSignal ();   回调=new FingerprintManagerCompat.AuthenticationCallback () {   @Override   公共空onAuthenticationError (int errMsgId CharSequence进行errString) {   超级。onAuthenticationError (errMsgId errString);//验证错误时,回调该方法。当连续验证5次错误时,将会走onAuthenticationFailed()方法   handler.obtainMessage (1 errMsgId 0) .sendToTarget ();   }      @Override   公共空间onAuthenticationSucceeded (FingerprintManagerCompat。AuthenticationResult结果){   super.onAuthenticationSucceeded(结果);//验证成功时,回调该方法.fingerprint对象不能再验证   handler.obtainMessage (2) .sendToTarget ();   }      @Override   公共空间onAuthenticationFailed () {   super.onAuthenticationFailed ();//验证失败时,回调该方法.fingerprint对象不能再验证并且需要等待一段时间才能重新创建指纹管理对象进行验证   handler.obtainMessage (3) .sendToTarget ();   }   };   处理程序=new处理程序(getMainLooper()){//也可以置为空,系统自动处理   @Override   公共空间handleMessage(消息味精){   开关(msg.what) {   案例1://验证错误//todo界面处理   handleErrorCode (msg.arg1);   打破;   案例2://验证成功//todo界面处理   取消=零;   打破;   案例3://验证失败//todo界面处理   取消=零;   打破;   默认值:   super.handleMessage(味精);   }      };//对应不同的错误,可以有不同的操作   私人空间handleErrorCode (int代码){   开关(代码){   案例FingerprintManager.FINGERPRINT_ERROR_CANCELED://todo指纹传感器不可用,该操作被取消   打破;   案例FingerprintManager.FINGERPRINT_ERROR_HW_UNAVAILABLE://todo当前设备不可用,请稍后再试   打破;   案例FingerprintManager.FINGERPRINT_ERROR_LOCKOUT://todo由于太多次尝试失败导致被锁,该操作被取消   打破;   案例FingerprintManager.FINGERPRINT_ERROR_NO_SPACE://todo没有足够的存储空间保存这次操作,该操作不能完成   打破;   案例FingerprintManager.FINGERPRINT_ERROR_TIMEOUT://todo操作时间太长,一般为30秒   打破;   案例FingerprintManager.FINGERPRINT_ERROR_UNABLE_TO_PROCESS://todo传感器不能处理当前指纹图片   打破;   }   }      

浅谈Android指纹解锁技术