前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >android锁屏实现思路 博客分类: Android Android

android锁屏实现思路 博客分类: Android Android

作者头像
chroya
发布2018-10-31 17:39:29
1.2K0
发布2018-10-31 17:39:29
举报
文章被收录于专栏:封碎封碎

以前就想过要实现一个锁屏程序,一直没有动手,今天尝试了一下。

首先,得听到系统的屏幕关闭的广播,这个广播是什么呢?不知道啊。那怎么办?搜呗!搜索,可以搜到,不过我找到一个可以知道系统所有广播的办法:我的 sdk 是1.5 的,进入sdk 主目录,然后进入platforms\android-1.5\data 目录,里面有 activity_actions.txt ,broadcast_actions.txt 等文本文档,activity_actions.txt 里面是系 统的所有action ,broadcast_actions 里面是系统的所有广播。从这里面我们可以找到屏幕关闭的广 播:android.intent.action.SCREEN_OFF 。

然后我写了个BroadcastReceiver ,

代码语言:javascript
复制
class ScreenOffListener extends BroadcastReceiver {

		@Override
		public void onReceive(Context context, Intent intent) {
			if(LOGIT) Log.d(TAG, "screen off");
		}
    	
    }

然后在manifest 里面注册,

代码语言:javascript
复制
<receiver android:name=".ScreenOffListener">
        <intent-filter>
        	<action android:name="android.intent.action.SCREEN_OFF" />
        </intent-filter> 
</receiver>

然后信心满满的在我的G2 上测试。可是,广播怎么都收不到。郁闷了。

换个方法!写一个activity ,在里面注册这个 BroadcastReceiver 。然后再次测试,结果。。。嘿嘿,成功收到广播。

看来在全局接收screenoff 广播是不行的,只能 程序里面注册监听,原因暂时不管了,有时间再研究。

继续这个话题。在activity 里面注册BroadcastReceiver ,如果这个activity 切换到后台了,也就是stop 了,BroadcastReceiver 必须得unregister ,然后就听不到screenoff 广播了。怎么办呢?要达到这个目的,只能使用Service 了。然后我写了一个Service ,在里面注册BroadcastReceiver ,监听screenoff ,嘿嘿,ok 了。然后这个服务一被关闭,马上再启动,这样就可以一直听到广播了。

广播的问题解决了,接下来就是锁屏主程序了。Activity 可以截获大部分的键,只有endcall 和home 键截获不了。截获键盘的代码:

代码语言:javascript
复制
@Override  public boolean dispatchKeyEvent(KeyEvent event) { 
	return true;
}

Endcall 没必要截获,因为要锁屏,必须要能关闭屏幕。而home 键,暂时没想到什么好办法。大家有什么办法,共同讨论讨论吧^-^。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2010-05-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档