国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android指紋識(shí)別功能

2019-12-12 00:43:43
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

指紋識(shí)別作為最新興起的用戶身份驗(yàn)證機(jī)制,已經(jīng)被越來(lái)越多的應(yīng)用程序所采用,相比傳統(tǒng)的密碼九宮格等驗(yàn)證方法,指紋識(shí)別更加安全,如今越來(lái)越多的安卓手機(jī)配備了指紋識(shí)別模塊,我們就來(lái)嘗試一下這一項(xiàng)新興的技術(shù)

首先創(chuàng)建一個(gè)安卓項(xiàng)目,指紋識(shí)別作為最近幾年才興起的技術(shù),對(duì)安卓api level要求較高(api 23以上即jdk6.0以上)

創(chuàng)建一個(gè)button用于觸發(fā)指紋識(shí)別,并在MainActivity里對(duì)其監(jiān)聽(tīng),代碼如下

Button button=(Button)findViewById(R.id.checkFingerPrint);  button.setOnClickListener(new View.OnClickListener() {   @Override   public void onClick(View view) {    Log.d("btn","開(kāi)始識(shí)別");    checkFingerPrint();   }  });

在checkFingerPrint方法里調(diào)用系統(tǒng)提供的指紋識(shí)別函數(shù)FingerprintManagerCompat的authenticate,代碼如下

private void checkFingerPrint(){  FingerprintManagerCompat.from(this).authenticate(null,0,null,new MyCallBack(),null); }

在這里解釋一下這個(gè)方法里各個(gè)參數(shù)的含義

第一個(gè)參數(shù)是用于通過(guò)指紋驗(yàn)證取出AndroidKeyStore中的key的對(duì)象

第二個(gè)參數(shù)可以用來(lái)取消指紋驗(yàn)證,如果想手動(dòng)關(guān)閉驗(yàn)證,可以調(diào)用該參數(shù)的cancel方法

第三個(gè)參數(shù)沒(méi)什么意義,就是傳0就好了

第四個(gè)參數(shù)最重要,由于指紋信息是存在系統(tǒng)硬件中的,app是不可以訪問(wèn)指紋信息的,所以每次驗(yàn)證的時(shí)候,系統(tǒng)會(huì)通過(guò)這個(gè)callback告訴你是否驗(yàn)證通過(guò)、驗(yàn)證失敗等

第五個(gè)參數(shù)是handler,fingerprint中的消息都通過(guò)這個(gè)handler來(lái)傳遞消息,如果你傳空,則默認(rèn)創(chuàng)建一個(gè)在主線程上的handler來(lái)傳遞消息,沒(méi)什么用,0傳null好了

通過(guò)這個(gè)函數(shù)api我們能夠看出來(lái)第四個(gè)參數(shù)最重要,他是決定指紋成功和失敗以及驗(yàn)證失敗后的后續(xù)操作,接下來(lái)我們就通過(guò)繼承重寫(xiě)這個(gè)函數(shù)(注意參數(shù)一定要跟父類一致,博主就是沒(méi)寫(xiě)對(duì)一開(kāi)始函數(shù)不執(zhí)行),代碼如下

public class MyCallBack extends FingerprintManagerCompat.AuthenticationCallback{  private static final String TAG = "MyCallBack";  @Override  public void onAuthenticationFailed(){   Log.d(TAG,"指紋錯(cuò)誤");  }  public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result){   Log.d(TAG,"指紋正確");  } }

這里我們給指紋識(shí)別正確和錯(cuò)誤添加了打印在控制臺(tái)的后續(xù)動(dòng)作,當(dāng)然繼承的這個(gè)類還有其他的方法onAuthenticationError和onAuthenticationHelp,這兩個(gè)方法是處理識(shí)別不成功的。這里要區(qū)分一下識(shí)別不成功和識(shí)別錯(cuò)誤的區(qū)別,前者是指沒(méi)有識(shí)別到指紋而后者是識(shí)別到了指紋但不匹配

接下來(lái)我們用模擬器做測(cè)試,出于安全的考慮谷歌暫時(shí)沒(méi)有開(kāi)放指紋存儲(chǔ)的功能,因此該功能使用的是系統(tǒng)里的指紋,也就是我們傳統(tǒng)的用于解鎖屏幕時(shí)設(shè)置的指紋,為了測(cè)試我們?nèi)ツM器里設(shè)置一個(gè)指紋

接下來(lái)進(jìn)到程序里面去測(cè)試我們的指紋識(shí)別,首先是用已經(jīng)錄入的指紋,通過(guò)控制臺(tái)可以看到已經(jīng)執(zhí)行了識(shí)別成功的方法

然后我們換錯(cuò)誤的指紋,再試一次,可以看到錯(cuò)誤指紋的方法也已經(jīng)被調(diào)用了

接下來(lái)貼出全部的代碼供大家參考

package com.example.john.fingerprinttest;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.Button;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  Button button=(Button)findViewById(R.id.checkFingerPrint);  button.setOnClickListener(new View.OnClickListener() {   @Override   public void onClick(View view) {    Log.d("btn","開(kāi)始識(shí)別");    checkFingerPrint();   }  }); } private void checkFingerPrint(){  FingerprintManagerCompat.from(this).authenticate(null,0,null,new MyCallBack(),null); } public class MyCallBack extends FingerprintManagerCompat.AuthenticationCallback{  private static final String TAG = "MyCallBack";  @Override  public void onAuthenticationFailed(){   Log.d(TAG,"指紋錯(cuò)誤");  }  public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result){   Log.d(TAG,"指紋正確");  } }}

這個(gè)程序只實(shí)現(xiàn)了簡(jiǎn)單的指紋識(shí)別,當(dāng)然作為一個(gè)涉及到安全性的功能,谷歌提供的東西遠(yuǎn)不止這些,比如多次識(shí)別錯(cuò)誤的保護(hù)等等。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 达日县| 阿克| 平原县| 苏州市| 凭祥市| 凤凰县| 桦川县| 安陆市| 望城县| 潜山县| 玉树县| 雷州市| 招远市| 扎囊县| 钦州市| 北安市| 昌宁县| 梁河县| 长沙市| 顺平县| 彭山县| 海宁市| 双牌县| 名山县| 会同县| 区。| 绥中县| 宜州市| 开封市| 青龙| 施秉县| 临清市| 临夏县| 翼城县| 洛扎县| 齐齐哈尔市| 德兴市| 周宁县| 庆城县| 资中县| 德保县|