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

 更新时间:2017年03月01日 11:05:58   作者:vemitriq  
这篇文章主要为大家详细介绍了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保存Bitmap图片到指定文件夹示例

    android保存Bitmap图片到指定文件夹示例

    android把Bitmap图片保存到指定文件夹中,具体实现方法如下,感兴趣的朋友可以参考下哈,希望对大家有所帮助
    2013-06-06
  • Android MaterialCardView的使用介绍与示例

    Android MaterialCardView的使用介绍与示例

    MaterialCardView是一个基于Android支持库中的CardView的可自定义组件。 MaterialCardView提供了CardView的所有功能,但增加了一些自定义属性,使用起来更加方便实用
    2021-11-11
  • Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)

    Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)

    这篇文章主要介绍了Android通过Handler与AsyncTask两种方式动态更新ListView的方法,结合实例形式分析了ListView动态更新的常用技巧,并附上完整实例源码供读者下载,需要的朋友可以参考下
    2015-12-12
  • Android SharedPreferences存储用法详解

    Android SharedPreferences存储用法详解

    这篇文章主要为大家详细介绍了Android SharedPreferences存储用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • Android编程自定义组件实例详解

    Android编程自定义组件实例详解

    这篇文章主要介绍了Android自定义组件,结合实例形式分析了Android自定义组件的原理、实现方法及相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • 使用Android studio3.6的java api方式调用opencv

    使用Android studio3.6的java api方式调用opencv

    这篇文章主要介绍了Android studio3.6的java api方式调用opencv的代码详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 常见Android选项菜单样式集合

    常见Android选项菜单样式集合

    这篇文章主要为大家分享了一份属于你自己的常见Android菜单样式集合,方便大家开发使用Android菜单,对OptionMenu感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Android使用Flutter实现录音插件

    Android使用Flutter实现录音插件

    这篇文章主要介绍了基于flutter实现录音功能,介绍了如何录音,如何把文件存放到本地,这些都是我们平常使用这个功能会遇到的问题。在使用的过程中遇到的问题也有列出,需要的朋友可以参考下
    2022-08-08
  • Android函数抽取壳的实现代码

    Android函数抽取壳的实现代码

    很早之前就想写这类的壳,最近终于把它做出来了,取名为dpt,下面把代码分享出来,对Android函数抽取壳的实现代码感兴趣的朋友一起看看吧
    2022-01-01
  • RecyclerView实现仿支付宝应用管理

    RecyclerView实现仿支付宝应用管理

    这篇文章主要为大家详细介绍了RecyclerView实现仿支付宝应用管理的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04

最新评论