android 簡單實現指紋識別功能
android6.0以後就提供了指紋識別功能,但是由於android手機被各大廠商弄的層次不齊,所以android的指紋識別使用的比較少,但是由於現在老的智慧手機被淘汰的差不多了,新手機幾乎無一不支援指紋解鎖的,所以android也可以搞起指紋識別來了,使使用更方便。
指紋驗證的思路大概是這樣的:
- 1.裝置是否支援指紋識別
- 2.裝置是否處於安全保護中(有指紋識別的手機,在使用指紋識別的時候,還需要強制設定密碼解鎖,如果未設定的話是不許使用指紋識別的)
- 3.裝置是否已經註冊過指紋(如果使用者未使用過這個指紋技術,那麼只能提示使用者到系統設定裡面去設定)
先看一張效果圖:
廢話不多說直接上程式碼吧:
要想檢視google文件的請點這裡
第一步:在AndroidManifest.xml中申明許可權:
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
此許可權不需要動態去申請,直接註冊就可以;關於哪些許可權需要去動態申請可以檢視鴻洋大神的這篇部落格:
http://blog.csdn.net/lmj623565791/article/details/50709663
第二步:獲取指紋管理類:
//這種是使用系統服務,但是必須要在sdk為23以上版本才行
// FingerprintManager fingerprintManager = (FingerprintManager) getSystemService(Context.FINGERPRINT_SERVICE);
//這種使用的是v4的相容包,推薦使用這種
managerCompat = FingerprintManagerCompat.from(MyApplication.appContext);
public boolean checkIsFinger() {
//判斷當前手機版本
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// if (ActivityCompat.checkSelfPermission(MyApplication.appContext, Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) {
// ToastUtils.getInstance().showToast("沒有指紋識別許可權");
// return false;
// }
Log.e(TAG, "有指紋許可權");
//判斷硬體是否支援指紋識別
if (!managerCompat.isHardwareDetected()) {
ToastUtils.getInstance().showToast("沒有指紋識別模組");
return false;
}
Log.e(TAG, "有指紋模組");
//判斷 是否開啟鎖屏密碼
if (!keyguardManager.isKeyguardSecure()) {
ToastUtils.getInstance().showToast("沒有開啟鎖屏密碼");
return false;
}
//判斷是否有指紋錄入
if (!managerCompat.hasEnrolledFingerprints()) {
ToastUtils.getInstance().showToast("沒有錄入指紋");
return false;
}
return true;
} else {
ToastUtils.getInstance().showToast("裝置系統版本太低不支援指紋識別");
return false;
}
}
/**
* 開始識別指紋
*
* @param listener
*/
public void callFingerPrint(final FingerRecognitionCallBack listener) {
authentFailedTimes = 0;
if (listener != null)
listener.onAuthenticationStart(); //開始指紋識別
cancellationSignal = new CancellationSignal(); //必須重新例項化,否則cancel 過一次就不能再使用了
managerCompat.authenticate(null, 0, cancellationSignal, new FingerprintManagerCompat.AuthenticationCallback() {
// 驗證出錯回撥 指紋感測器會關閉一段時間,在下次呼叫authenticate時,會出現禁用期(時間依廠商不同30,1分都有)
@Override
public void onAuthenticationError(int errMsgId, CharSequence errString) {
if (listener != null)
listener.onAuthenticationError(errMsgId, errString);
}
// 驗證失敗 指紋驗證失敗後,指紋感測器不會立即關閉指紋驗證,系統會提供5次重試的機會,即呼叫5次onAuthenticationFailed後,才會呼叫onAuthenticationError
@Override
public void onAuthenticationFailed() {
authentFailedTimes++;
if (listener != null)
listener.onAuthenticationFailed(authentFailedTimes);
}
@Override
public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {//比如手指移動太快等情況
if (listener != null)
listener.onAuthenticationHelp(helpMsgId, helpString);
}
// 當驗證的指紋成功時會回撥此函式,然後不再監聽指紋sensor
@Override
public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) {
if (listener != null)
listener.onAuthenticationSucceeded(result);
}
}, null);
}
if (FingerUnlockUtil.init().checkIsFinger()) {
final AlertDialog dia = localBuilder.show();
FingerUnlockUtil.init().callFingerPrint(new FingerRecognitionCallBackHelper() {
@Override
public void onAuthenticationError(int errMsgId, CharSequence errString) {
dia.dismiss();
ToastUtils.getInstance().showToast("驗證錯誤===" + String.valueOf(errString));
}
@Override
public void onAuthenticationFailed(int failedTimes) {
ToastUtils.getInstance().showToast("已經驗證錯誤===" + failedTimes + "次");
}
@Override
public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {//可以不用實現
ToastUtils.getInstance().showToast("驗證幫助===" + String.valueOf(helpString));
}
@Override
public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) {
dia.dismiss();
ToastUtils.getInstance().showToast("驗證成功===");
}
});
}
這裡就結束了,是不是很簡單呢,可以點選這裡下載原始碼:demo原始碼
相關文章
- Android 指紋識別,指紋支付demoAndroid
- [Android]BMPrinter 指紋識別庫Android
- C++ LibCurl實現Web指紋識別C++Web
- 如何設計APP的指紋識別功能APP
- CMS指紋識別
- 破解指紋識別有多簡單?所有人都能輕易做到
- 生物特徵識別之指紋識別,偽造,指紋裝置缺陷設計特徵
- 利用指紋識別或面部識別,為應用新增私密保護功能
- 指紋識別將走向何方?
- 基於MATLAB的指紋識別演算法模擬實現Matlab演算法
- win10指紋識別登陸怎麼用_win10指紋識別登陸使用教程Win10
- 簡單聊聊裝置指紋設計
- 使用 Tcl 實現簡單的文字識別程式
- 使用 Fantom 實現簡單的文字識別程式
- 使用 Elixir 實現簡單的文字識別程式
- Laravel 與指紋識別使用者身份Laravel
- 簡單介紹Android自定義View實現時鐘功能AndroidView
- java指紋識別以及谷歌圖片識別技術原始碼Java谷歌原始碼
- Android 指紋登入、支付Android
- 使用 Modula-2 實現簡單的文字識別程式
- 使用 ActionScript 實現簡單滑動驗證碼識別
- 使用 R 語言實現簡單的文字識別程式
- 使用 Go 語言實現簡單的文字識別(OCR)Go
- 64行程式碼實現簡單人臉識別行程
- Android中SharePreferences的簡單實現Android
- 裝置指紋簡析
- Python 超簡單實現人類面部情緒的識別Python
- 基於滴滴雲 GPU 實現簡單 MINIST 手寫識別GPU
- 門禁鎖加裝指紋功能
- Android實現二值點陣圖識別Android
- SQLMAP的前世今生Part2 資料庫指紋識別SQL資料庫
- 超簡單實現iOS列表的索引功能iOS索引
- Java Web簡單登陸功能的實現JavaWeb
- Vue實現簡單的購物車功能Vue
- Android應用加固的簡單實現方案Android
- Android通過輔助功能實現搶微信紅包原理簡單介紹Android
- 指紋適配記錄Android9.0Android
- 基於Android平臺實現人臉識別Android