android-自定义锁屏界面
来源:互联网 发布:全站程序员 编辑:程序博客网 时间:2024/06/07 00:43
自定义锁屏,简单来说就是两方面,一是屏蔽掉系统锁屏,二是弹出自定义的锁屏界面。
一、屏蔽系统锁屏
这部分工作主要由两部分组成,首先是申请权限
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
其次是在我们自定义的锁屏界面操作系统锁屏,这部分有两种方法。第一种是使用KeyguardManager来实现
KeyguardManager mKeyguardManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);mKeyguardManager.newKeyguardLock("my_lockscreen").disableKeyguard();这种方式不论是否安全锁屏都会禁掉,准确来说是disableKeyguard方法会禁掉锁屏服务,直到调用reenableKeyguard方法才会恢复。此外,这种方法自API13开始不被推荐使用了。
第二种是使用getWindow().addFlags的方式
//在keyguard在前显示应用程序窗口getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); //彻底隐藏非安全验证的keyguard getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);这样,我们就实现了屏蔽系统锁屏的目的。接下来如何弹出自定义锁屏界面,众所周知,锁屏一般是跟屏幕的点亮和熄灭有关,所以我们可以监听系统的屏幕点亮、熄灭广播,来达到弹出我么自定义界面的目的。屏幕的点亮、熄灭广播必须动态注册,而我们由必须时刻监听这两个广播,所以最好的方式就是在常驻的service中监听这两个广播,关于如何创建常驻service,参考这篇文章android-常驻service。广播创建如下:
final IntentFilter filter = new IntentFilter(); // 屏幕灭屏广播 filter.addAction(Intent.ACTION_SCREEN_OFF); // 屏幕亮屏广播 filter.addAction(Intent.ACTION_SCREEN_ON); BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() { @Override public void onReceive(final Context context, final Intent intent) { String action = intent.getAction(); if (Intent.ACTION_SCREEN_ON.equals(action)) { Intent i = new Intent(context,ScreenActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); context.startActivity(i); } if (Intent.ACTION_SCREEN_OFF.equals(action)) { Intent i = new Intent(context,ScreenActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); context.startActivity(i); } } }; registerReceiver(mBatInfoReceiver, filter);
这里还有一个问题,就是弹出多个activity的情况,目前我是自己定义了一个activity stack进行判断。此外还可以在activity配置那里修改启动方式为
android:launchMode="singleInstance"这样也可以解决关闭锁屏后,呼出锁屏所在应用程序的问题。
0 0
- android-自定义锁屏界面
- android自定义splash界面
- android自定义对话框界面
- 自定义手机锁屏界面
- [Android 界面] Android: 自定义DIALOG
- android-自定义发送短信界面
- android界面之自定义标题栏
- android loading界面 & 自定义ProgressDialog
- Android界面篇【自定义列表】
- Android自定义Dialog(美化界面)
- Android 应用启动界面自定义
- Android 应用启动界面自定义
- [Android常见问题] 自定义授权界面
- Android自定义View-登录界面
- android系统自定义关机界面
- Android自定义View之自定义“更多”界面
- android 锁屏界面处理
- Android添加锁屏界面
- java 线程的run和start方法的不同
- Java多线程之Callable接口的实现
- Qt事件处理机制
- DAO design pattern
- Android各种访问权限Permission详解
- android-自定义锁屏界面
- 第六章、SpringMVC学习- 注解式控制器详解(1)-注解式控制器运行流程及处理器定义
- hive中间接实现不等值连接<转>
- 单元测试利器 JUnit 4
- freemarker API
- c++ primer 学习笔记,第二章变量和基本类型
- 视频技术参数指标
- Android -- 设置textview文字居中或者控件居中
- 注释符号