Android利用手势完成屏幕密码锁功能
作者:vemitriq 发布时间:2023-04-08 21:21:40
本文实例为大家分享了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屏幕旋转的机
- 前言这几天专门研究了下JNI编程,在网上找了好多资料,不过好多都是以前的,没有更新,而且有的还是错误的,让人不得不吐槽一把。所以觉得自己来一
- 负载均衡使用微服务后,为了能够承担高并发的压力,同一个服务可能会启动多个实例。这时候消费者就需要负载均衡,把请求分散到各个实例。负载均衡主要
- JetBrainsMono 是 JetBrains 公司开发的一款开源字体,可免费商用。正如其名字带的Mono,即Monospaced Fo
- 统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形
- 前言:Android Studio中把项目的lib库提交到Jcenter仓库中,需要使用到Bintray,Bintray是jCenter的提
- 本文为大家分享了android倒计时控件,供大家参考,具体代码如下/* * Copyright (C) 2012 The * Project
- 什么是流?流:程序和设备之间连接起来的一根用于数据传输的管道,流就是一根管道。流的分类:四大基本抽象流(输入流,输出流,字符流,字节流)文件
- 一、前言最近做的项目由于引入第三方库导致在运行mvn clean package 打jar时,编译出来的 Jar 包很大(服务器多达500M
- 获取Spring上下文环境ApplicationContextWeb项目中发现有人如此获得Spring的上下环境:public class
- 关于这个系列里的问题,每个学Java的人都应该搞懂。当然,若是仅仅学Java玩玩就无所谓了。若是你以为本人现已逾越初学者了,却不很懂这些问题
- Java设计模式的模板方法模式定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步
- 旧的设计方案开发api的时候,需要先定义好接口的数据响应结果.如下是一个很简单直接的Controller实现方法及响应结果定义.@RestC
- 本文实例讲述了Java使用excel工具类导出对象功能。分享给大家供大家参考,具体如下:package com.gcloud.common;
- 1.情景展示将要访问的接口地址等常用的配置添加到properties文件中,比直接写到java类中的好处在于:当我们需要修改相应配置时,直接
- 来自同事_Smile的封装应用,记录学习一下,分享给大家,具体如下:1、AnimImageViewLoader类的封装/** * 适用于an
- 目录一、.NET 体系结构二、Hello world三、类型和变量四、程序结构前言:C#(读作“See Sharp”)是一种新式编程语言,不
- 1.springboot启动过程中,首先会收集需要加载的bean的定义,作为BeanDefinition对象,添加到BeanFactory中
- 1,在项目上鼠标右键 --> Open Module Settings2, Artifacts --> + --> JAR
- 错误内容:com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis