您好,登錄后才能下訂單哦!
本篇文章為大家展示了Android開發中怎么實現一個手勢密碼功能,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
1.如果使用GestureOverlayView,在xml配置文件中使用Android.gesture.GestureOverlayView,否則會報ClassNotFoundException
2.關于判斷MEDIA_MOUNTED,API的解釋:getExternalStorageState() returns MEDIA_MOUNTED if the media ispresent and mounted at its mount point with read/write access.
3.使用了service和broadcastReciever進行監聽,監測到屏幕亮暗進行程序啟動,參考了文章:
4.關于android.intent.action.MAIN
決定應用程序最先啟動的Activity
android.intent.category.LAUNCHER
決定應用程序是否顯示在程序列表里
5.關于R.id的問題,將要import類R所在的包
6.利用了Android SDK范例開發中的GestureOverlayView進行開發畫圖工具
7.實現了在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(); }
出現問題:WindowManager.LayoutParams.TYPE_KEYGUARD以及LayoutParams.FLAG_FULLSCREEN出現沖突,無法解決,搜索網上無解決辦法。
參考文檔:
\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.出現了返回HOME頁后重新從程序頁進入,發現又進入開鎖界面:
經過查詢思考,發現,其實是HOME頁后將程序放入處理棧當中,所以重新進入時就會繼續回到棧頂,并且破壞了全屏效果。
因此必須實現返回鍵功能,而不是HOME鍵。
因此,使用finish();方法就足夠了,狗日的SDK開發,竟然寫了一個外部監聽,不能使用finish方法,后來改寫成內部類,直接搞定。
根據個人感覺,其實監聽寫內部類還是比較保險的,開發初級階段,慢慢摸索。
newGestureOverlayView.OnGesturePerformedListener()
最后,上效果圖,4天的結果,還不錯。起碼解決了全屏顯示和屏蔽HOME鍵的問題。
上述內容就是Android開發中怎么實現一個手勢密碼功能,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。