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

首頁 > 系統 > Android > 正文

Android指紋解鎖示例代碼

2019-12-12 04:06:51
字體:
來源:轉載
供稿:網友

Android6.0及以上系統支持指紋識別解鎖功能:項目中用到,特此抽離出來,備忘。

功能是這樣的:在用戶將app切換到后臺運行(超過一定的時長,比方說30秒),再進入程序中的時候就會彈出指紋識別的界面。用戶輸入指紋,解鎖成功。指紋識別的模塊其實很簡單啦,google的api已經封裝好了,我們只需要學會調用就ok了。

思路:

在用戶將程序切換到后臺的時候需要有一個方法計時,這樣的方法寫在哪里呢,對,要寫在service中。在Activity中開啟服務:

Intent intent = new Intent("com.example.fingureprint.services.JudgeFingureService");    intent.setPackage(getPackageName());    startService(intent);

intent.setpackage(getPackageName);在6.0及以上系統中啟動服務必須加上這句。

服務不要忘記在清單文件中注冊幺。

 <!--注冊判斷指紋密碼開啟的服務-->    <service       android:name="com.example.fingureprint.services.JudgeFingureService"      android:enabled="true">      <intent-filter >        <action android:name="com.example.fingureprint.services.JudgeFingureService"/>      </intent-filter>    </service>

在服務中onStart()開啟一個線程:

new Thread(){      public void run() {        try {          while(true){          Thread.sleep(1000);          if(isAppOnForeground()){            Log.i("前臺運行", "time"+countnumber);            if(countnumber>30){              if(!"com.example.fingureprint.FingureAriseActivity".equals(listActivity())){                Intent myintent = new Intent();                myintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                myintent.setClass(getApplicationContext(),FingureAriseActivity.class);                startActivity(myintent);              }              countnumber = 0;            }else{              countnumber = 0;            }          }else{            Log.i("后臺運行", "time"+countnumber);            countnumber ++;          }          }                  } catch (InterruptedException e) {          e.printStackTrace();        }      };          }.start();

計時用了個while死循環,讓thread睡一秒。哈哈,沒有用Handler是不是很簡單。

判斷程序是否在后臺運行:

  /**   * 判斷程序在前臺運行的方法   * @return   */  public boolean isAppOnForeground() {    ActivityManager systemService = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);    List<RunningAppProcessInfo> runningAppProcesses = systemService.getRunningAppProcesses();    if(runningAppProcesses==null) return false;    for(RunningAppProcessInfo processes: runningAppProcesses){      if(processes.processName.equals("com.example.fingureprint")&&processes.importance==RunningAppProcessInfo.IMPORTANCE_FOREGROUND){        return true;      }    }    return false;  }

有一個小細節,當用戶從后臺切換到前臺,但是用戶沒有解鎖,又切換到后臺,過三十秒后切換到前臺,這時候不能再跳出手勢解鎖界面了吧。

解決:1.設置下手勢界面的啟動方式。2.檢測程序的當前運行界面。

  /**   * 判斷當前運行在前臺的Activity   */  @SuppressWarnings("deprecation")  public String listActivity(){    ActivityManager systemService = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);    List<RunningTaskInfo> runningTasks = systemService.getRunningTasks(1);    RunningTaskInfo runningTaskInfo = runningTasks.get(0);    ComponentName component = runningTaskInfo.topActivity;    String className = component.getClassName();    return className;  }

下面講一下指紋識別的api:在6.0及以上的v4包下:

 需要在清單文件中添加權限:

<uses-permission android:name="android.permission.USE_FINGERPRINT"/>

用到的類有 FingerprintManagerCompat,此類中的api可以檢測您的手機是否有指紋傳感器,手機有沒有錄入過指紋。

AuthenticationCallback,可以繼承此類,分別重寫里面的方法,用來接收指紋識別的結果:

具體的可以下載下面的demo.

地址:demo

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武宁县| 衡东县| 郁南县| 平定县| 习水县| 翼城县| 油尖旺区| 比如县| 凤冈县| 泰顺县| 驻马店市| 临西县| 鹿邑县| 宜黄县| 伊宁县| 五河县| 龙陵县| 丰宁| 乌兰县| 莎车县| 抚顺市| 仙居县| 太仓市| 平阳县| 山东| 阿克| 台东市| 祁阳县| 巢湖市| 满城县| 富源县| 鄂州市| 甘南县| 班玛县| 泉州市| 黄梅县| 萝北县| 肃南| 海丰县| 深圳市| 集贤县|