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

首頁 > 系統 > Android > 正文

Android指紋識別功能

2019-10-21 21:47:33
字體:
來源:轉載
供稿:網友

指紋識別作為最新興起的用戶身份驗證機制,已經被越來越多的應用程序所采用,相比傳統的密碼九宮格等驗證方法,指紋識別更加安全,如今越來越多的安卓手機配備了指紋識別模塊,我們就來嘗試一下這一項新興的技術

首先創建一個安卓項目,指紋識別作為最近幾年才興起的技術,對安卓api level要求較高(api 23以上即jdk6.0以上)

創建一個button用于觸發指紋識別,并在MainActivity里對其監聽,代碼如下

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

在checkFingerPrint方法里調用系統提供的指紋識別函數FingerprintManagerCompat的authenticate,代碼如下

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

在這里解釋一下這個方法里各個參數的含義

第一個參數是用于通過指紋驗證取出AndroidKeyStore中的key的對象

第二個參數可以用來取消指紋驗證,如果想手動關閉驗證,可以調用該參數的cancel方法

第三個參數沒什么意義,就是傳0就好了

第四個參數最重要,由于指紋信息是存在系統硬件中的,app是不可以訪問指紋信息的,所以每次驗證的時候,系統會通過這個callback告訴你是否驗證通過、驗證失敗等

第五個參數是handler,fingerprint中的消息都通過這個handler來傳遞消息,如果你傳空,則默認創建一個在主線程上的handler來傳遞消息,沒什么用,0傳null好了

通過這個函數api我們能夠看出來第四個參數最重要,他是決定指紋成功和失敗以及驗證失敗后的后續操作,接下來我們就通過繼承重寫這個函數(注意參數一定要跟父類一致,博主就是沒寫對一開始函數不執行),代碼如下

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

這里我們給指紋識別正確和錯誤添加了打印在控制臺的后續動作,當然繼承的這個類還有其他的方法onAuthenticationError和onAuthenticationHelp,這兩個方法是處理識別不成功的。這里要區分一下識別不成功和識別錯誤的區別,前者是指沒有識別到指紋而后者是識別到了指紋但不匹配

接下來我們用模擬器做測試,出于安全的考慮谷歌暫時沒有開放指紋存儲的功能,因此該功能使用的是系統里的指紋,也就是我們傳統的用于解鎖屏幕時設置的指紋,為了測試我們去模擬器里設置一個指紋

Android,指紋識別

接下來進到程序里面去測試我們的指紋識別,首先是用已經錄入的指紋,通過控制臺可以看到已經執行了識別成功的方法

Android,指紋識別

然后我們換錯誤的指紋,再試一次,可以看到錯誤指紋的方法也已經被調用了

Android,指紋識別

接下來貼出全部的代碼供大家參考

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","開始識別");    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,"指紋錯誤");  }  public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result){   Log.d(TAG,"指紋正確");  } }}

這個程序只實現了簡單的指紋識別,當然作為一個涉及到安全性的功能,谷歌提供的東西遠不止這些,比如多次識別錯誤的保護等等。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 井研县| 泸溪县| 漳州市| 夹江县| 土默特右旗| 涪陵区| 恩平市| 五家渠市| 黔东| 安龙县| 西乌珠穆沁旗| 东海县| 保亭| 诸城市| 治多县| 杭锦旗| 华容县| 鲁甸县| 宁晋县| 黄山市| 南宁市| 明溪县| 茶陵县| 来凤县| 泰兴市| 双城市| 博爱县| 正镶白旗| 屏山县| 沅陵县| 墨玉县| 惠来县| 同德县| 万年县| 旅游| 藁城市| 沧州市| 西安市| 阿拉尔市| 江川县| 合江县|