自定义锁屏,简单来说就是两方面,一是屏蔽掉系统锁屏,二是弹出自定义的锁屏界面。

一、屏蔽系统锁屏

这部分工作主要由两部分组成,首先是申请权限

<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);  //彻底隐藏非安全验证的keyguardgetWindow().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"

这样也可以解决关闭锁屏后,呼出锁屏所在应用程序的问题。

android-自定义锁屏界面相关推荐

  1. android 游戏 锁屏界面开发,android 锁屏程序开发

    参考http://blog.csdn.net/wdaming1986/article/details/8837023 锁屏程序的步骤如下: 1.替换系统锁屏 2.屏蔽Home键,back键.menu键 ...

  2. android开发 自定义锁屏界面,插件锁屏桌面自定义 “安卓4.0”界面美化教程

    距离Android4.0系统的正式发布已经过去一段时间,除了最先搭载该系统的三星Galaxy Nexus.华为荣耀Android4.0商用版以及小米手机MIUI4.0等,多数用户目前仍然处于观望阶段. ...

  3. 浅谈 Android 自定义锁屏页的发车姿势

    作者:blowUp ,原文链接:http://mp.weixin.qq.com/s?__biz=MzA3NTYzODYzMg==&mid=2653577446&idx=2&sn ...

  4. Android 自定义锁屏_三星Key Cafe 2021最新版下载-三星Key Cafe自定义键盘输入app v1.0.00.26...

    这次小编要为大家带来一款由三星官方正式推出的自定义键盘输入工具"Key Cafe",帮助大家能够自由定制手机输入法的主题和键位,允许用户能够自由定制键盘布局,增删案件等,设计一套最 ...

  5. Android 屏蔽锁屏界面上的通知显示

    一. 前言 [定制需求描述]:在插入SD后,  锁屏状态下, 去掉提示"SD卡可用于传输照片和媒体文件" 需求拆解:  要求正常显示在SystemUI下拉状态栏,  只需要屏蔽在锁 ...

  6. 【腾讯Bugly干货分享】浅谈Android自定义锁屏页的发车姿势

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57875330c9da73584b025873 一.为什么需要自定义锁屏页 锁屏 ...

  7. 浅谈Android自定义锁屏页的发车姿势

    一.为什么需要自定义锁屏页 锁屏作为一种黑白屏时代就存在的手机功能,至今仍发挥着巨大作用,特别是触屏时代的到来,锁屏的功用被发挥到了极致.多少人曾经在无聊的时候每隔几分钟划开锁屏再关上,孜孜不倦,其酸 ...

  8. 【腾讯Bugly干货分享】浅谈 Android 自定义锁屏页的发车姿势

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57875330c9da73584b025873 一.为什么需要自定义锁屏页 锁屏 ...

  9. android 系统 锁屏界面,在安卓手机系统使用Ubuntu漂亮的锁屏界面攻略

    如果你了解Ubuntu系统,那么绝对会被它那漂亮的锁屏界面所吸引.今天我们就让广大Android用户能够提前感受一下Ubuntu系统的锁屏界面,并且不会有任何功能上的影响,所有的通知与信息都可以正常显 ...

  10. Android实现自定义锁屏控制

    当在Android手机上需要实现自定义的锁屏,  往往在进入自定义的锁屏界面界面之前需要先解开屏幕锁, 以顺利的进入自定义锁屏界面 ,并能方便用户即时的做其他操作,下面用代码来实现这一功能: 1.点亮 ...

最新文章

  1. 超棒的微软Metro风格Logo设计
  2. python生产脚本_生产级部署 Python 脚本,日志收集、崩溃自启,一键搞定
  3. java python算法_用Java,Python和C ++示例解释的搜索算法
  4. Vue.js 第1章 Vue常用指令学习
  5. windows 启动exe程序前注入dll(c++)
  6. Linux内存管理:内存描述之内存页面page
  7. React(2)之——React组件化
  8. SpringBoot异常处理机制之自定义404、500错误提示页面
  9. python如何向服务器发送文件,在Python中使用套接字向服务器发送文件
  10. EXCEL调用REFPROP方法
  11. 第六次人口普查数据分析
  12. eclipse提示:This tag and its children can be replaced by one lt;TextView/gt; and a compound drawable
  13. 2012年托福听力真题词汇总结
  14. 寻租——乞丐没有白拿施舍
  15. 微信可以用邮箱吗?邮箱无法分享到微信怎么办?微信邮箱从哪找呢
  16. npx mrm lint-staged 报错
  17. html5 打气球小游戏,javascript开发打气球小游戏
  18. OC callback
  19. 微机原理与接口技术重要的知识点
  20. unity制作和输出摄像机环绕动画

热门文章

  1. 【影评】 卧虎藏龙中的人物性格的分析
  2. 魅族手机flyme服务器不响应,魅族手机你绝对不知道的小技巧,魅族Flyme系统超实用!...
  3. Python 自动化开发【初级】到精通-张子夜-专题视频课程
  4. Web应用实例:音频可视化
  5. 差分数组:PIPI的区间操作Ⅰ
  6. 中移物联网模块M8321P调试记录
  7. 新浪微博首席架构师漫谈微博底层架构
  8. 14年macmini装双硬盘_低配版Mac mini 2014机械硬盘换ssd图解
  9. Xcode 报错 ERROR ITMS-90096,启动图黑屏
  10. echarts嵌套饼图