日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
指紋驗證登錄開發(fā)流程詳解

[[433625]]

前言

指紋登錄可以實現(xiàn)應用的快捷登錄,在Android6.0谷歌才提供統(tǒng)一指紋SDK接口

創(chuàng)新互聯(lián)專注于武進企業(yè)網(wǎng)站建設,成都響應式網(wǎng)站建設公司,商城系統(tǒng)網(wǎng)站開發(fā)。武進網(wǎng)站建設公司,為武進等地區(qū)提供建站服務。全流程按需規(guī)劃網(wǎng)站,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務

今天我們來介紹下指紋登錄功能;

一、app里指紋登錄介紹

指紋識別是Android6.0以上就開始支持的一個功能,并且類也不多,主要就是FingerprintManager還有它里面三個內部類(AuthenticationCallback、AuthenticationResult、CryptoObject);

指紋數(shù)據(jù)是在手機的設置里面,不是存到自己寫的APP的;

指紋識別就只能識別,而不能在APP中錄入指紋,想錄入指紋可以,自己要到手機設置里面的指紋功能自己去添加,指紋識別功能能做的就是把用戶放到感應區(qū)的指紋數(shù)據(jù)與手機設置里面的已錄入的指紋數(shù)據(jù)進行比對,再執(zhí)行成功失敗的回調,僅此而已;

二、指紋登錄步驟詳解

1、申請權限

Android清單文件中的指紋的權限是

 
 
 
  1.  

2、驗證手機是否支持指紋

  • FingerprintManagerCompat提供了三個方法:
  • isHardwareDetected() 判斷是否有硬件支持
  • isKeyguardSecure() 判斷是否設置鎖屏,因為一個手機最少要有兩種登錄方式

hasEnrolledFingerprints() 判斷系統(tǒng)中是否添加至少一個指紋

 
 
 
  1. /** 
  2. * 判斷是否支持指紋識別 
  3. */ 
  4. public static boolean supportFingerprint(Context mContext) { 
  5.     if (Build.VERSION.SDK_INT < 23) { 
  6.         Toast.makeText(mContext, "您的系統(tǒng)版本過低,不支持指紋功能", Toast.LENGTH_SHORT).show(); 
  7.         return false; 
  8.     } else { 
  9.         KeyguardManager keyguardManager = mContext.getSystemService(KeyguardManager.class); 
  10.         FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.from(mContext); 
  11.         if (!fingerprintManager.isHardwareDetected()) { 
  12.             Toast.makeText(mContext, "您的系統(tǒng)版本過低,不支持指紋功能", Toast.LENGTH_SHORT).show(); 
  13.             return false; 
  14.         } else if (keyguardManager != null && !keyguardManager.isKeyguardSecure()) { 
  15.             Toast.makeText(mContext, "您的手機不支持指紋功能", Toast.LENGTH_SHORT).show(); 
  16.             return false; 
  17.         } else if (!fingerprintManager.hasEnrolledFingerprints()) { 
  18.             Toast.makeText(mContext, "您至少需要在系統(tǒng)設置中添加一個指紋", Toast.LENGTH_SHORT).show(); 
  19.             return false; 
  20.         } 
  21.     } 
  22.     return true; 

3、生成一個對稱加密的key

 
 
 
  1. val DEFAULT_KEY_NAME = "default_key" 
  2.  lateinit var keyStore: KeyStore 
  3.    private fun initKey() { 
  4.         keyStore = KeyStore.getInstance("AndroidKeyStore") 
  5.         keyStore.load(null) 
  6.         val keyGenerator = 
  7.             KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore") 
  8.         val builder = KeyGenParameterSpec.Builder(DEFAULT_KEY_NAME, 
  9.             KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT) 
  10.             .setBlockModes(KeyProperties.BLOCK_MODE_CBC) 
  11.             .setUserAuthenticationRequired(true) 
  12.             .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7) 
  13.         keyGenerator.init(builder.build()) 
  14.         keyGenerator.generateKey() 
  15.     } 

4、生成一個Cipher對象

 
 
 
  1. private fun initCipher(mContext: Context?) { 
  2.         val key = keyStore.getKey(DEFAULT_KEY_NAME, null) as SecretKey 
  3.         val cipher = Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/" 
  4.                 + KeyProperties.BLOCK_MODE_CBC + "/" 
  5.                 + KeyProperties.ENCRYPTION_PADDING_PKCS7) 
  6.         cipher.init(Cipher.ENCRYPT_MODE, key) 
  7.     } 

5、開啟指紋驗證

 
 
 
  1. private void showFingerPrintDialog(Context context, Cipher cipher) { 
  2.     FingerprintManagerCompat fingerprintManagerCompat = FingerprintManagerCompat.from(context); 
  3.     FingerprintManagerCompat.CryptoObject cryptoObject = new FingerprintManagerCompat.CryptoObject(cipher); 
  4.     CancellationSignal mCancellationSignal = new CancellationSignal(); 
  5.     //識別過程中可以手動取消指紋識別 
  6.     //mCancellationSignal.cancel(); 
  7.     fingerprintManagerCompat.authenticate(cryptoObject, 0, mCancellationSignal, new MyCallBack(), null); 

6、指紋驗證回調

 
 
 
  1. public class MyCallBack extends FingerprintManagerCompat.AuthenticationCallback { 
  2.    @Override 
  3.    public void onAuthenticationError(int errMsgId, CharSequence errString) { 
  4.        //當出現(xiàn)錯誤的時候回調此函數(shù),比如多次嘗試都失敗了的時候,errString是錯誤信息 
  5.        //一般來說我們都是先判斷一下是不是自己手動取消 
  6.        Log.e("TAG", "errMsgId=" + errMsgId); 
  7.        if (errMsgId == FingerprintManager.FINGERPRINT_ERROR_LOCKOUT) { 
  8.            Log.e("TAG", "" + errString); 
  9.        } 
  10.    } 
  11.    //當指紋驗證失敗的時候會回調此函數(shù),失敗之后允許多次嘗試,失敗次數(shù)過多會停止響應一段時間然后再停止sensor的工作 
  12.    @Override 
  13.    public void onAuthenticationFailed() { 
  14.        //指紋認證失敗,請再試一次 
  15.        Log.e("TAG", "onAuthenticationFailed"); 
  16.    } 
  17.    @Override 
  18.    public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) { 
  19.       //錯誤時提示幫助,比如說指紋錯誤,我們將顯示在界面上 讓用戶知道情況 
  20.       Log.e("TAG", "helpString=" + helpString); 
  21.    } 
  22.    //當驗證的指紋成功時會回調此函數(shù),然后不再監(jiān)聽指紋sensor 
  23.    @Override 
  24.    public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) { 
  25.        //這里我們可以做取消彈框之類的 
  26.        Log.e("TAG", "onAuthenticationSucceeded=" + result.toString()); 
  27.    } 

到此指紋驗證登錄流程完了,是不是很簡單;

總結

指紋這塊還有很多很多東西等著我們去學習,比如加密等;

一起學習加油;


當前題目:指紋驗證登錄開發(fā)流程詳解
文章路徑:http://www.5511xx.com/article/djpgceo.html