Android开发中屏保程序

有时候,需要在程序中实现屏保相关的功能,如指定一段时间后,显示自定义的屏保画面,网上查了很多资料,大多讲得不详细,或者说不完整。故对屏保相关的功能进行整理。

1、注册一个BroadcastReceiver,用于接收ACTION_SCREEN_OFF事件。当接收到这个事件时,打开自定义的屏保画面。以下代码为了测试方便,放在MainActivity.java中,也可以根据需要,把代码放入service中。

 
 
  1. registerReceiver(mMasterResetReciever,newIntentFilter(Intent.ACTION_SCREEN_OFF)); 
  2.         BroadcastReceiver mMasterResetReciever=newBroadcastReceiver() { 
  3.         publicvoidonReceive(Context context, Intent intent){ 
  4.             try{ 
  5.                 Intent i =newIntent(); 
  6.                 i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
  7.                 i.setClass(context, ScreenSaverActivity.class); 
  8.                 context.startActivity(i); 
  9.             }catch(Exception e){ 
  10.                 Log.i("Output:", e.toString()); 
  11.             } 
  12.         } 
  13.     }; 

2、完成这一步时,虽然屏幕关闭时,屏保画面被显示,但由于接收的是ACTION_SCREEN_OFF事件,所以屏幕已经变黑了,这个时候就需要强制点亮屏幕。

首先,在AndroidManifest.xml中加上permission 权限:

 
 
  1.  

以下代码在ScreenSaverActivity.onCreate中

 
 
  1. PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE); 
  2.     mWakeLock = pm.newWakeLock( 
  3.         PowerManager.ACQUIRE_CAUSES_WAKEUP | 
  4.         PowerManager.SCREEN_DIM_WAKE_LOCK | 
  5.         PowerManager.ON_AFTER_RELEASE,"SimpleTimer"); 

然后在屏保画面显示时,点亮屏幕。在ScreenSaverActivity.onResume中加入

 
 
  1. mWakeLock.acquire(); 

为了能够在退出屏保时,能够让屏幕可以关闭,我们必须释放WakeLock.故在ScreenSaverActivity.onPause中加入

 
 
  1. mWakeLock.acquire(); 

注意,必须放在onResume中,如放在别的地方。会导致程序无法再次进入屏保,具体原因不详。由于手头只有一个手机,不能进行广泛的测试。

3. 完成第二步后,一般情况下大功告成。按键就可以返回程序。但有时候需要点击屏幕就返回系统。这个时候会发现,无论怎么样点击屏幕,系统都不会有响应,因为此时屏幕已经被锁定。因此,要实现这个功能,在打开屏保时,需要关键屏幕的锁定功能。

首先,在AndroidManifest.xml中加上permission 权限:

 
 
  1.  

再次,把以下这段代码加入合适的地方。只要启动屏保时能够被调用到

 
 
  1. KeyguardManager mKeyguardManager= (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE); 
  2.     KeyguardLock mKeyguardLock= mKeyguardManager.newKeyguardLock(TAG); 
  3.     mKeyguardLock.disableKeyguard(); 

当然也可以通过以下代码开启屏幕锁定功能。

 
 
  1. mKeyguardLock.reenableKeyguard(); 

网页名称:Android开发中屏保程序
浏览地址:http://www.shufengxianlan.com/qtweb/news28/369428.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联