編輯:關於Android編程
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
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。
Android中顯示GIF動畫的實現代碼
本文實例講述了Android中顯示GIF動畫的實現代碼。分享給大家供大家參考,具體如下:gif圖動畫在android中還是比較常用的,比如像新浪微博中,有很多gif圖片,
設計模式之策略模式
概要設計模式是一門藝術,如果真正了解這門藝術,你會發現,世界都將變得更加優美。定義策略模式定義了一系列的算法,並將每一個算法封裝起來,他們之間還可以相互替換,策略模式獨立
Android BlueDroid(一):BlueDroid概述
關鍵詞:bluedroid bluez作者:xubin341719(歡迎轉載,請注明作者,請尊重版權,謝謝!)歡迎指正錯誤,共同學習、共同進步!!一、名詞解釋:(有用信息
Android 屬性動畫(Property Animation)
1. Property Animation屬性動畫,這個是在Android 3.0中才引進的,以前學WPF時裡面的動畫機制好像就是這個,它更改的是對象的實際屬性,在Vie