自定义锁屏功能
来源:互联网 发布:淘宝优惠券网站程序 编辑:程序博客网 时间:2024/05/20 08:42
大体的思路:系统启动成功后SystemServer调用wm.systemReady()通知WindowManagerService,进而调用PhoneWindowManager,最终通过LockPatternKeyguardView显示解锁界面。当按Power键时,系统会像向外广播消息Intent.ACTION_SCREEN_OFF, 同样当在锁屏的情况下按Power键会向外广播Intent.ACTION_SCREEN_ON消息,捕捉这些消息是前提。但由于这些检测都需要实时的,所以需要创建一个Service 来负责检测这些。Now, here we go.
示例以及实现过程:
第一步,创建Service, 创建了MyService.java文件用于创建Servicepublic class MyService extends Service { …}
第二步,注册你需要监听的Broadcast Receiver,在这里我们需要检测Intent.ACTION_SCREEN_OFF 和Intent.ACTION_SCREEN_ON消息,
private void registerIntentReceivers()
{
Log.d(TAG, "***registerIntentReceivers");
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
filter.addAction("android.intent.action.SCREEN_ON");
LockLisnter receiver = new LockLisnter(); //用于侦听
registerReceiver(receiver, filter);
}
在这里可能有个问题,为什么不写在AndroidManifest.xml中呢?这样不是更方便吗?Good question!
第三步, 在Broarcast Receiver中接收这些广播。
public void onReceive(Context context, Intent paramIntent)
{ if ("android.intent.action.SCREEN_OFF".equals(str))
{
Log.d(TAG,"***"+str);
Log.d(TAG,"***Equal with SCREEN_OFF");
startMainActivity(); //如果是Screen_Off,启动自己的画面
}
}
虽然在这里当按Power键的时候可以启动自己的Lock画面,但是在自己的启动之后仍然会被系统的覆盖掉。所以就需要把系统的干掉了。
第四步,替换系统的LockScreen.
KeyguardManager mKeyguardManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock mKeyguardLock = mKeyguardManager.newKeyguardLock("Activity1");
mKeyguardLock.disableKeyguard();
其实系统的LockScreen的名字准确的说应该是Keyguard。
在这里需要导入其他一些文件:
import android.app.KeyguardManager;
import android.app.KeyguardManager.KeyguardLock;
有了这些资源虽然可以编译通过了,但是当调用到mKeyguardLock.disableKeyguard();
这句的时候就会崩溃,关键的一个原因就是权限的问题,因为要替换系统的 必须的有足够的权限,因此在Manifest.xml中添加:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
好了,到这里你就可以尽情的Customize系统的Lock Screen吧
总结:在替换系统的Lock Screen中大概用到了,Service ,Activity, broadcast Receiver,等知识点,在此不做详细讲解,再次强调,第一. 注册监听系统的有些Broadcast receiver,有时候写在Manifest.xml里是收不到的,第二,替换系统的东西,在很多时候需要增加权限,注意在Manifest文件中增加权限
- 自定义锁屏功能
- java中自定义锁实现synchronized功能
- GridView自定义分页功能
- 自定义右键菜单功能
- 自定义标签功能扩展
- openstack 扩展自定义功能
- vba自定义功能函数
- 自定义菜单功能开发
- MFC自定义打印功能
- 自定义标签功能扩展
- Pig自定义功能
- 自定义拍照功能
- bootstrap自定义功能按钮
- 自定义功能函数-matlab
- 自定义菜单功能开发
- 自定义搜索功能
- Ueditor自定义功能问题
- android自定义相机功能
- 如何设置文件 为 受保护的操作系统文件
- 像老板一样思考——通信工程师和老板打交道的一些思考
- 对h.264压缩视频码流中i帧的提取(firstime)
- jadclipse常见错误
- h.264的图象参数集和序列参数集
- 自定义锁屏功能
- <转>linux下各类文件解压方法
- WebClient Proxy
- Mysql使用大全-从基础到存储过程
- python的string和PyQt的QString的区别
- ssh中的jar
- 移植sqlite3到嵌入式平台上
- 模糊查询(LIKE)AND (PATINDEX() . CHARINDEX())
- 修改linux关键库后的解决办法