Android利用手勢(shì)完成屏幕密碼鎖功能
本文實(shí)例為大家分享了Android畫筆屏幕鎖小程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
1.如果使用GestureOverlayView,在xml配置文件中使用Android.gesture.GestureOverlayView,否則會(huì)報(bào)ClassNotFoundException
2.關(guān)于判斷MEDIA_MOUNTED,API的解釋:getExternalStorageState() returns MEDIA_MOUNTED if the media ispresent and mounted at its mount point with read/write access.
3.使用了service和broadcastReciever進(jìn)行監(jiān)聽,監(jiān)測(cè)到屏幕亮暗進(jìn)行程序啟動(dòng),參考了文章:
4.關(guān)于android.intent.action.MAIN
決定應(yīng)用程序最先啟動(dòng)的Activity
android.intent.category.LAUNCHER
決定應(yīng)用程序是否顯示在程序列表里
5.關(guān)于R.id的問題,將要import類R所在的包
6.利用了Android SDK范例開發(fā)中的GestureOverlayView進(jìn)行開發(fā)畫圖工具
7.實(shí)現(xiàn)了在service中啟動(dòng)activity
Intent i = new Intent(UpdateService.this,Lock.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); this.startActivity(i);
8. 隱藏界面
this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); Don't call setContentView() before requestFeature().
9.全屏并屏蔽HOME鍵,以及屏蔽返回鍵,完成辦法。
public booleanonKeyDown(int keyCode,KeyEvent event){
switch(keyCode){
caseKeyEvent.KEYCODE_HOME:return true;
caseKeyEvent.KEYCODE_BACK:return true;
caseKeyEvent.KEYCODE_CALL:return true;
caseKeyEvent.KEYCODE_SYM: return true;
caseKeyEvent.KEYCODE_VOLUME_DOWN: return true;
caseKeyEvent.KEYCODE_VOLUME_UP: return true;
caseKeyEvent.KEYCODE_STAR: return true;
}
returnsuper.onKeyDown(keyCode, event);
}
屏蔽home鍵的代碼:
public voidonAttachedToWindow() {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
出現(xiàn)問題:WindowManager.LayoutParams.TYPE_KEYGUARD以及LayoutParams.FLAG_FULLSCREEN出現(xiàn)沖突,無法解決,搜索網(wǎng)上無解決辦法。
參考文檔:
\frameworks\policies\base\phone\com\android\internal\policy\impl\PhoneWindowManager.java1089行
if (code ==KeyEvent.KEYCODE_HOME) {
// If a system window has focus,then it doesn't make sense
// right now to interact withapplications.
WindowManager.LayoutParams attrs =win != null ? win.getAttrs() : null;
if (attrs != null) {
final int type = attrs.type;
if (type ==WindowManager.LayoutParams.TYPE_KEYGUARD
|| type ==WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG) {
// the "app" iskeyguard, so give it the key
return false;
}
final int typeCount =WINDOW_TYPES_WHERE_HOME_DOESNT_WORK.length;
for (int i=0; i<typeCount;i++) {
if (type ==WINDOW_TYPES_WHERE_HOME_DOESNT_WORK[i]) {
// don't do anything,but also don't pass it to the app
return true;
}
}
}
因此解決問題!
10.出現(xiàn)了返回HOME頁后重新從程序頁進(jìn)入,發(fā)現(xiàn)又進(jìn)入開鎖界面:
經(jīng)過查詢思考,發(fā)現(xiàn),其實(shí)是HOME頁后將程序放入處理?xiàng).?dāng)中,所以重新進(jìn)入時(shí)就會(huì)繼續(xù)回到棧頂,并且破壞了全屏效果。
因此必須實(shí)現(xiàn)返回鍵功能,而不是HOME鍵。
因此,使用finish();方法就足夠了,狗日的SDK開發(fā),竟然寫了一個(gè)外部監(jiān)聽,不能使用finish方法,后來改寫成內(nèi)部類,直接搞定。
根據(jù)個(gè)人感覺,其實(shí)監(jiān)聽寫內(nèi)部類還是比較保險(xiǎn)的,開發(fā)初級(jí)階段,慢慢摸索。
newGestureOverlayView.OnGesturePerformedListener()
最后,上效果圖,4天的結(jié)果,還不錯(cuò)。起碼解決了全屏顯示和屏蔽HOME鍵的問題。
PS:將會(huì)對(duì)來電開鎖功能進(jìn)行更新
上圖:



更多內(nèi)容請(qǐng)參考專題:Android密碼使用教程
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android編程開發(fā)實(shí)現(xiàn)TextView顯示表情圖像和文字的方法
這篇文章主要介紹了Android編程開發(fā)實(shí)現(xiàn)TextView顯示表情圖像和文字的方法,結(jié)合實(shí)例形式分析了Android中TextView的使用技巧,需要的朋友可以參考下2015-12-12
Android Studio開發(fā)環(huán)境搭建教程詳解
android studio是最近比較火的開發(fā),那么android studio開發(fā)環(huán)境怎么搭建呢?下面通過本文給大家記錄下Android Studio開發(fā)環(huán)境搭建教程詳解,需要的朋友參考下吧2017-11-11
Android Toolbar應(yīng)用欄使用方法簡(jiǎn)介
App中應(yīng)用欄是十分常見的,通常應(yīng)用欄會(huì)顯示當(dāng)前頁面的標(biāo)題,還有一些操作按鈕,例如返回、搜索、掃碼等。本文介紹如何通過Toolbar實(shí)現(xiàn)應(yīng)用欄2022-12-12
Android百度地圖應(yīng)用開發(fā)基礎(chǔ)知識(shí)
這篇文章主要為大家詳細(xì)介紹了Android百度地圖應(yīng)用開發(fā)基礎(chǔ)知識(shí),為開發(fā)百度地圖應(yīng)用做準(zhǔn)備,感興趣的小伙伴們可以參考一下2016-06-06
限時(shí)搶購(gòu)秒殺系統(tǒng)架構(gòu)分析與實(shí)戰(zhàn)
這篇文章主要介紹了限時(shí)搶購(gòu)秒殺系統(tǒng)架構(gòu)分析與實(shí)戰(zhàn) 的相關(guān)資料,需要的朋友可以參考下2016-01-01
Android編程調(diào)節(jié)屏幕亮度(背景燈)及保持背景燈常亮的方法
這篇文章主要介紹了Android編程調(diào)節(jié)屏幕亮度(背景燈)及保持背景燈常亮的方法,涉及Android屏幕相關(guān)屬性涉及技巧,需要的朋友可以參考下2016-01-01
Android自定義ScrollView實(shí)現(xiàn)阻尼回彈
這篇文章主要為大家詳細(xì)介紹了Android自定義ScrollView實(shí)現(xiàn)阻尼回彈,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
AndroidStudio kotlin配置詳細(xì)介紹
這篇文章主要介紹了AndroidStudio kotlin配置詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-05-05

