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指紋識別
- 紅辣椒X1指紋識別怎麼用 紅辣椒X1指紋識別功能體驗教程
- 破解指紋識別有多簡單?所有人都能輕易做到
- 生物特徵識別之指紋識別,偽造,指紋裝置缺陷設計特徵
- Android M系統將原生支援指紋識別Android
- 利用指紋識別或面部識別,為應用新增私密保護功能
- 諾基亞魅族新機Supreme曝光:指紋識別功能REM
- 華為Mate S指紋識別怎麼設定 華為Mate S指紋識別設定教程
- 中興AXON mini指紋識別怎麼設定 中興AXON mini指紋識別設定教程
- 華為Mate 8指紋識別怎麼設定 華為Mate 8指紋識別設定教程
- 基於MATLAB的指紋識別演算法模擬實現Matlab演算法
- iPhone 6C概念渲染圖曝光 配備指紋識別功能iPhone
- Web Cookie將死,指紋識別崛起WebCookie
- win10指紋識別登陸怎麼用_win10指紋識別登陸使用教程Win10
- OPPO R9指紋識別怎麼設定 OPPO R9指紋識別設定教程
- 魅族Pro 5指紋識別怎麼設定 魅族Pro 5指紋識別設定教程
- 華為P9指紋識別怎麼設定 華為P9指紋識別設定教程
- 蘋果新一代iPhone預測 全螢幕指紋識別功能蘋果iPhone
- 安卓指紋對稱加密及登入功能的實現安卓加密
- Laravel 與指紋識別使用者身份Laravel
- 移動端指紋識別(長按事件)事件
- Web伺服器指紋識別工具httprintWeb伺服器HTTP
- YunOS飛輪設計概念機即將釋出 配指紋識別功能
- java指紋識別以及谷歌圖片識別技術原始碼Java谷歌原始碼
- 使用 Elixir 實現簡單的文字識別程式
- 使用 Tcl 實現簡單的文字識別程式
- win7指紋識別設定圖例Win7
- Web應用程式指紋識別工具BlindElephantWeb
- 360手機f4指紋識別怎麼設定 360手機f4指紋識別設定教程
- 魅藍5拆機圖解 主打高顏值 配備指紋識別功能圖解
- 使用 Fantom 實現簡單的文字識別程式
- 樂視樂pro3指紋識別設定教程
- 德國黑客攻破蘋果TouchID指紋識別系統黑客蘋果
- 蘋果2018年普及人臉識別 2019上虛擬指紋識別功能迴歸蘋果