Android实现自定义锁屏控制

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


1、点亮屏幕与解系统锁

//light the screen
 PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);  
 WakeLock mWakelock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP
				    		| PowerManager.SCREEN_DIM_WAKE_LOCK, "SimpleTimer");  
 mWakelock.acquire();  
 mWakelock.release();
				    
//unlock the screen
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);  
KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("");  
keyguardLock.disableKeyguard(); 


2、添加权限

上述代码要实现 自动屏幕解锁功能,还需要 在主配置文件AndroidManifest.xml中添加权限:

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
     
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />


3、具体实现自定义锁屏控制系统的大致思想

(1)在主界面中设计一个锁屏控制按钮,决定是否进入 自定义的 锁屏 控制界面;

(2) 需要设计一个Service,在启动时即在 onCreate方法中注册监听系统屏幕锁屏的广播行为ACTION_SCREEN_OFF: "android.intent.action.SCREEN_OFF";

(3)在上述serice中定义一个广播接收器:如果监听到 ACTION_SCREEN_OFF,则进入到自定义的锁屏控制界面即启动自定义实现的Activity;


 4、难点实现

  (1)ACTION_SCREEN_OFF该消息需要动态注册,不能在XML文件中全局注册

  (2)收到screen_off消息后,如何让自己定义的锁屏界面在系统锁屏界面之上

  (3)点亮屏幕时,如何防止启动自定义锁屏界面时出现的闪屏现象

  (4)在某些机型某些时候需要点亮两次屏幕

  (5)解自定义锁屏时需要先解系统锁

   (6)如何做到在解系统锁时在多机型多Rom下的兼容

   (7)如何做到在解系统锁后不对耳机线控等行为或者其他相关行为产生影响

   (8)如何在解系统锁后,要及时的能恢复系统锁

    (9)有其他第三方锁屏系统存在时,如何保证自己的锁屏在其他所有锁屏之上。

   (10)如何在锁屏界面屏蔽相关按键,特别是屏蔽Home键,特别是4.0系统之上

 5、小结

        简单的实现自定义锁屏,我想大部分人在很短的时间内都能实现,关键是要整合到第三应用中要保证其能和大多数机型和Rom能兼容,也就是要解决上面写到的难点问题,比如可以实现类似天天动听和酷狗类似的锁屏功能 。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我心飞翔.坚定不移

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值