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能兼容,也就是要解决上面写到的难点问题,比如可以实现类似天天动听和酷狗类似的锁屏功能 。

展开阅读全文

没有更多推荐了,返回首页