Android利用手勢(shì)完成屏幕密碼鎖功能
本文實(shí)例為大家分享了Android畫(huà)筆屏幕鎖小程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
1.如果使用GestureOverlayView,在xml配置文件中使用Android.gesture.GestureOverlayView,否則會(huì)報(bào)ClassNotFoundException
2.關(guān)于判斷MEDIA_MOUNTED,API的解釋?zhuān)篻etExternalStorageState() returns MEDIA_MOUNTED if the media ispresent and mounted at its mount point with read/write access.
3.使用了service和broadcastReciever進(jìn)行監(jiān)聽(tīng),監(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的問(wèn)題,將要import類(lèi)R所在的包
6.利用了Android SDK范例開(kāi)發(fā)中的GestureOverlayView進(jìn)行開(kāi)發(fā)畫(huà)圖工具
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)問(wèn)題:WindowManager.LayoutParams.TYPE_KEYGUARD以及LayoutParams.FLAG_FULLSCREEN出現(xiàn)沖突,無(wú)法解決,搜索網(wǎng)上無(wú)解決辦法。
參考文檔:
\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;
}
}
}
因此解決問(wèn)題!
10.出現(xiàn)了返回HOME頁(yè)后重新從程序頁(yè)進(jìn)入,發(fā)現(xiàn)又進(jìn)入開(kāi)鎖界面:
經(jīng)過(guò)查詢(xún)思考,發(fā)現(xiàn),其實(shí)是HOME頁(yè)后將程序放入處理?xiàng).?dāng)中,所以重新進(jìn)入時(shí)就會(huì)繼續(xù)回到棧頂,并且破壞了全屏效果。
因此必須實(shí)現(xiàn)返回鍵功能,而不是HOME鍵。
因此,使用finish();方法就足夠了,狗日的SDK開(kāi)發(fā),竟然寫(xiě)了一個(gè)外部監(jiān)聽(tīng),不能使用finish方法,后來(lái)改寫(xiě)成內(nèi)部類(lèi),直接搞定。
根據(jù)個(gè)人感覺(jué),其實(shí)監(jiān)聽(tīng)寫(xiě)內(nèi)部類(lèi)還是比較保險(xiǎn)的,開(kāi)發(fā)初級(jí)階段,慢慢摸索。
newGestureOverlayView.OnGesturePerformedListener()
最后,上效果圖,4天的結(jié)果,還不錯(cuò)。起碼解決了全屏顯示和屏蔽HOME鍵的問(wèn)題。
PS:將會(huì)對(duì)來(lái)電開(kāi)鎖功能進(jìn)行更新
上圖:



更多內(nèi)容請(qǐng)參考專(zhuān)題:Android密碼使用教程
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android編程開(kāi)發(fā)實(shí)現(xiàn)TextView顯示表情圖像和文字的方法
這篇文章主要介紹了Android編程開(kāi)發(fā)實(shí)現(xiàn)TextView顯示表情圖像和文字的方法,結(jié)合實(shí)例形式分析了Android中TextView的使用技巧,需要的朋友可以參考下2015-12-12
Android Studio開(kāi)發(fā)環(huán)境搭建教程詳解
android studio是最近比較火的開(kāi)發(fā),那么android studio開(kāi)發(fā)環(huán)境怎么搭建呢?下面通過(guò)本文給大家記錄下Android Studio開(kāi)發(fā)環(huán)境搭建教程詳解,需要的朋友參考下吧2017-11-11
Android Toolbar應(yīng)用欄使用方法簡(jiǎn)介
App中應(yīng)用欄是十分常見(jiàn)的,通常應(yīng)用欄會(huì)顯示當(dāng)前頁(yè)面的標(biāo)題,還有一些操作按鈕,例如返回、搜索、掃碼等。本文介紹如何通過(guò)Toolbar實(shí)現(xiàn)應(yīng)用欄2022-12-12
Android百度地圖應(yīng)用開(kāi)發(fā)基礎(chǔ)知識(shí)
這篇文章主要為大家詳細(xì)介紹了Android百度地圖應(yīng)用開(kāi)發(fā)基礎(chǔ)知識(shí),為開(kāi)發(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

