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

首頁 > 系統(tǒng) > Android > 正文

Android利用手勢完成屏幕密碼鎖功能

2019-10-23 19:44:09
字體:
供稿:網(wǎng)友

本文實例為大家分享了Android畫筆屏幕鎖小程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下

1.如果使用GestureOverlayView,在xml配置文件中使用Android.gesture.GestureOverlayView,否則會報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進行監(jiān)聽,監(jiān)測到屏幕亮暗進行程序啟動,參考了文章:

4.關(guān)于android.intent.action.MAIN

決定應(yīng)用程序最先啟動的Activity
android.intent.category.LAUNCHER

決定應(yīng)用程序是否顯示在程序列表里

5.關(guān)于R.id的問題,將要import類R所在的包

6.利用了Android SDK范例開發(fā)中的GestureOverlayView進行開發(fā)畫圖工具

7.實現(xiàn)了在service中啟動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頁后重新從程序頁進入,發(fā)現(xiàn)又進入開鎖界面:

經(jīng)過查詢思考,發(fā)現(xiàn),其實是HOME頁后將程序放入處理棧當(dāng)中,所以重新進入時就會繼續(xù)回到棧頂,并且破壞了全屏效果。

因此必須實現(xiàn)返回鍵功能,而不是HOME鍵。

因此,使用finish();方法就足夠了,狗日的SDK開發(fā),竟然寫了一個外部監(jiān)聽,不能使用finish方法,后來改寫成內(nèi)部類,直接搞定。

根據(jù)個人感覺,其實監(jiān)聽寫內(nèi)部類還是比較保險的,開發(fā)初級階段,慢慢摸索。
newGestureOverlayView.OnGesturePerformedListener() 

最后,上效果圖,4天的結(jié)果,還不錯。起碼解決了全屏顯示和屏蔽HOME鍵的問題。

PS:將會對來電開鎖功能進行更新

上圖:

Android手勢完成屏幕密碼鎖,Android手勢屏幕密碼,Android手勢密碼鎖

Android手勢完成屏幕密碼鎖,Android手勢屏幕密碼,Android手勢密碼鎖

Android手勢完成屏幕密碼鎖,Android手勢屏幕密碼,Android手勢密碼鎖

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 察雅县| 扬州市| 波密县| 长泰县| 亳州市| 微博| 岑巩县| 阳城县| 阳泉市| 天长市| 泉州市| 井陉县| 塘沽区| 通海县| 礼泉县| 丰顺县| 库伦旗| 鸡东县| 孝昌县| 郎溪县| 衡东县| 娄烦县| 资兴市| 夏河县| 东安县| 中牟县| 浪卡子县| 郑州市| 万载县| 荆州市| 武平县| 环江| 五大连池市| 赞皇县| 轮台县| 来凤县| 滦平县| 陈巴尔虎旗| 客服| 夹江县| 随州市|