欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android利用手勢(shì)完成屏幕密碼鎖功能

 更新時(shí)間:2017年03月01日 11:05:58   作者:vemitriq  
這篇文章主要為大家詳細(xì)介紹了Android利用手勢(shì)完成屏幕密碼鎖功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(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)文章

最新評(píng)論