读书人

Android银屏保护KeyguardManager相关内

发布时间: 2013-02-15 15:46:56 作者: rapoo

Android屏幕保护KeyguardManager相关内容学习

前阵子收到客户要求,要做一款安卓手机和平板上使用的屏保,其实蛮奇怪的,电脑用屏保倒是见得多了,可是手机不使用的时候关掉屏幕不就OK了吗?话说现在的智能手机电池都不耐用的可怜,还装屏保岂不是很费电。原来客户是用于放在营业厅(手机相关),通过手机或者平板来使用相关设备投射到电子屏幕上展示广告的用途,24小时不断电,只是展示用,故电量不作考虑。要求在服务端上传欲展示的图片,PDA上可以进行获取更新图片,只要不断滚动他们的广告就可以了。起初并不是我来做的,同事已经都写的差不多了,他突然有别的项目很急,留给我来做,也好,以前没做过,顺便了解一下android屏保相关的知识,写下来做积累。

-------------------------------------------------------------------

????? 首先接触到了KeyguardManager,用来对系统的屏保进行屏蔽

public class KeyguardManager?extends Object?

Class that can be used to lock and unlock the keyboard. Get an instance of this class by calling Context.getSystemService(java.lang.String) with argument Context.KEYGUARD_SERVICE. The actual class to control the keyboard locking is KeyguardManager.KeyguardLock.

一个用于锁屏和解锁的类,通过调用Context.getSystemService(Context.KEYGUARD_SERVICE)来获取实例。实际上用于操控锁屏的是KeyguardManager.KeyguardLock类

KeyguardManager?两个内部类分别是:

(1)KeyguardManager.KeyguardLock(l两个函数)???

记得加权限

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

???????? disableKeyguard()函数来解除锁屏

???????? reenableKeyguard()反解除锁屏.reenableKeyguard()反解除锁屏的意思是:如果在调用disableKeyguard()函数之前是锁屏的,那么就进行锁屏,否则不进行任何操作。当然如果之前没调用disableKeyguard()函数,也不进行任何操作。

(2)KeyguardManager.OnKeyguardExitResult(boolean success)? :返回true表示exitKeyguardSecurely()函数执行成功,否则表示失败<具体自己没用到,是个做判断和debug用的吧估计>

?

-----------------------------------------------------------------

????? 而后用到的是开启和关闭屏幕唤醒的内容,PowerManager和WakeLock这部分之前用到过,不在详述,这次把这部分单独写成一个工具类,简化代码

????????????????????????????????????????????????Android银屏保护KeyguardManager相关内容学习

Android银屏保护KeyguardManager相关内容学习????????????????????????????????????????????????? ????Android银屏保护KeyguardManager相关内容学习

?

Service的代码:



?

总结和注意:

1.系统屏保的屏蔽方法以及屏幕唤醒的知识参考API就可以了,比较简单的新知识

2.如果很多张图片来加载的话,很可能出现令人最头疼的OOM,由于屏保就需求全屏显示,所以图片缩放的方式不合适,没想到好办法。不过为了避免反复解锁过程中出现OOM,在onDestroy()方法中对图片进行了recycle。

3.在模拟器上运行没有发现问题,但可能在不同的机型上会出现问题,比如有些手机将安卓的源码改掉了,甚至不允许使用屏蔽系统屏保的方法。还是原生态的android系统最好了,都瞎改什么呢。

读书人网 >Android

热点推荐