指紋適配記錄Android9.0
注意:系統預設的每段時間驗證指紋次數為5次 次數用完之後自動關閉驗證,並且30秒之內不允行在使用驗證
指紋驗證根據Api分兩個階段
- 第一階段:api小於Build.VERSION_CODES.M(Android 6.0=23),系統不支援指紋系統。(部分定製(紅米)手機暫不考慮)
- 第二階段:api小於Build.VERSION_CODES.P(Android 9.0=28),谷狗封裝了support,上面那個過時了
零.許可權
許可權(不用動態申請):
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
一.第一階段
Api小於23,做法:彈個吐司說,你手機太撇。
23<= Api <28,的做法是通過指紋管理類:
FingerprintManager
1.0.獲取例項[指紋管理器]
private FingerprintManager fingerMgr;
private UFinger() {
fingerMgr = (FingerprintManager)KApp.getInstance().
getSystemService(Context.FINGERPRINT_SERVICE);
}
1.1.是否有指紋硬體
public boolean hasFingerHard() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return false;
}
if (fingerMgr == null) {
return false;
}
return fingerMgr.isHardwareDetected();
}
1.2.是否有錄入指紋
public boolean hasFingerInput() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return false;
}
if (fingerMgr == null) {
return false;
}
return fingerMgr.hasEnrolledFingerprints();
}
1.3.指紋識別
@RequiresApi(api = Build.VERSION_CODES.M)
public void authenticate() {
fingerMgr.authenticate(null, new CancellationSignal(), 0, new FingerprintManager.AuthenticationCallback() {
@Override
public void onAuthenticationError(int errorCode, CharSequence errString) {
//指紋驗證失敗
if (listener != null) {
listener.onResult(false, "指紋不匹配");
}
}
@Override
public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
//指紋驗證成功
//result這裡的result是指紋資料,需要相應的key才能拿出來用
if (listener != null) {
listener.onResult(false, "驗證成功");
}
}
@Override
public void onAuthenticationFailed() {
//多次指紋驗證錯誤後,回撥此方法;
//並且,(第一次錯誤)由系統鎖定30s
if (listener != null) {
listener.onResult(false, "多次錯誤,暫時鎖定");
}
}
},null);
}
二、第二階段
在
Android P
,指紋管理器FingerprintManager
被谷狗的 生物識別BiometricPrompt
替換。(現在面部、虹膜等現在還只有一個佔位)雖然是提出的方法是基於Android P,但是谷狗封裝的Android support或者AndroidX中已經對低版本做了相容,所以可以直接使用
FingerprintManagerCompat
2.0.獲取例項[指紋管理器]
private final FingerprintManagerCompat compat;
private UBiometric() {
compat = FingerprintManagerCompat.from(KApp.getInstance());
}
2.1.是否有指紋硬體
public boolean hasFingerHard() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return false;
}
if (compat == null) {
return false;
}
return compat.isHardwareDetected();
}
2.2.是否有錄入指紋
public boolean hasFingerInput() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return false;
}
if (compat == null) {
return false;
}
return compat.hasEnrolledFingerprints();
}
2.3.指紋識別
public void authenticate(FingerListener listener) {
//必須重新例項化。cancel過,資源會被釋放,
cancelSignal = new CancellationSignal();
compat.authenticate(null,//用於通過指紋驗證取出AndroidKeyStore中key的值
0,//系統建議為0,其他值,谷狗佔位用於其他生物驗證
cancelSignal,//強制取消指紋驗證
new FingerprintManagerCompat.AuthenticationCallback() {
@Override
public void onAuthenticationError(int errMsgId, CharSequence errString) {
if (listener != null) {
listener.onResult(false, "指紋不匹配");
}
}
@Override
public void onAuthenticationFailed() {
//多次指紋驗證錯誤後,回撥此方法;
//並且,(第一次錯誤)由系統鎖定30s
if (listener != null) {
listener.onResult(false, "多次錯誤,暫時鎖定");
}
}
@Override
public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) {
//指紋驗證成功
//result這裡的result是指紋資料,需要相應的key才能拿出來用
if (listener != null) {
listener.onResult(true, "驗證成功");
}
}
}, null);// 內部驗證訊息通過Handler傳遞,不需要,傳空
}
一般,還會有判斷系統是否設定過鎖屏這個操作,不過我覺得沒有必要,因為,現在錄入指紋,自動就鎖屏了
相關文章
- Android適配學習記錄Android
- Unity學習疑問記錄之介面適配Unity
- Android 指紋識別,指紋支付demoAndroid
- 指紋2
- 指紋3
- rk3368 Android9.0 HIDL除錯記錄Android除錯
- iPhone 8要逆天!配雙電池+光學指紋識別iPhone
- iPhone 6C概念渲染圖曝光 配備指紋識別功能iPhone
- 訪問通訊錄 適配iOS7iOS
- win10怎麼加指紋密碼_win10指紋密碼鎖如何新增指紋Win10密碼
- Android適配: 拉伸適配的缺點Android
- flutter 螢幕尺寸適配 字型大小適配Flutter
- 服務指紋分析
- CMS指紋識別
- Android錄製視訊的全面屏適配Android
- YunOS飛輪設計概念機即將釋出 配指紋識別功能
- 指紋機皇 華為G7 Plus手機指紋應用教程
- 榮耀暢玩5X玩轉指紋攻略 深挖指紋潛力
- 魅藍5拆機圖解 主打高顏值 配備指紋識別功能圖解
- 學習筆記:自適應佈局,多螢幕適配筆記
- 記一次 Weex 的 iPhone X 適配iPhone
- Android適配Android
- iOS 11適配iOS
- https適配HTTP
- 適配iphone XiPhone
- 華為P20Lite渲染圖曝光:配備三顆徠卡攝像頭、背部指紋
- 劍指offer刷題記錄
- 我的前端筆記 之 移動端適配前端筆記
- 隨手記 iOS 11 適配實踐總結iOS
- Splash 佔點陣圖適配 全面屏筆記筆記
- 生物特徵識別之指紋識別,偽造,指紋裝置缺陷設計特徵
- Android 指紋登入、支付Android
- android螢幕適配三:通過畫素密度適配Android
- Android螢幕適配(理論適配100%機型)Android
- Flutter螢幕適配Flutter
- Rem 等比適配始末REM
- Flutter深色模式適配Flutter模式
- h5適配H5