展会信息港展会大全

Android开发中实现屏保相关的功能 显示自定义的屏保画面
来源:互联网   发布日期:2016-01-19 12:04:17   浏览:2912次  

导读:简单的实现自定义锁屏,我想大部分人在很短的时间内都能实现,关键是要整合到第三应用中要保证其能和大多数机型和Rom能兼容,也就是要解决上面写到的难 点问题。有时候,需要在程序中实现屏保相关的功能,如指定 ...

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

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

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

registerReceiver(mMasterResetReciever,newIntentFilter(Intent.ACTION_SCREEN_OFF));

BroadcastReceiver mMasterResetReciever=newBroadcastReceiver() {

publicvoidonReceive(Context context, Intent intent){

try{

Intent i =newIntent();

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

i.setClass(context, ScreenSaverActivity.class);

context.startActivity(i);

}catch(Exception e){

Log.i("Output:", e.toString());

}

}

};

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

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

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

以下代码在ScreenSaverActivity.onCreate中

PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);

mWakeLock = pm.newWakeLock(

PowerManager.ACQUIRE_CAUSES_WAKEUP |

PowerManager.SCREEN_DIM_WAKE_LOCK |

PowerManager.ON_AFTER_RELEASE,"SimpleTimer");

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

mWakeLock.acquire();

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

mWakeLock.acquire();

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

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

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

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

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

KeyguardManager mKeyguardManager= (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);

KeyguardLock mKeyguardLock= mKeyguardManager.newKeyguardLock(TAG);

mKeyguardLock.disableKeyguard();

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

mKeyguardLock.reenableKeyguard();

赞助本站

人工智能实验室

相关热词: 屏保 Android开发

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港