Android tv版开发代码中如何取消屏保

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

在onCreate()方法中注册:

registerReceiver(mMasterResetReciever, new IntentFilter(Intent.ACTION_SCREEN_OFF));

在声明变量处:
BroadcastReceiver mMasterResetReciever = new BroadcastReceiver(){
        public void onReceive(Context context, Intent intent) {
            try {
                Intent i = new Intent();
                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                i.setClass(context, MainActivity.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();
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值