Android利用手势完成屏幕密码锁功能

Android利用手势完成屏幕密码锁功能,第1张

概述本文实例为大家分享了Android画笔屏幕锁小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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键的问题。

PS:将会对来电开锁功能进行更新

上图:


更多内容请参考专题:Android密码使用教程

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android利用手势完成屏幕密码锁功能全部内容,希望文章能够帮你解决Android利用手势完成屏幕密码锁功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1146804.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存