屏幕的唤醒与休眠


参考文章:http://blog.csdn.net/hufeng882412/article/details/7640123

一般情况下都是手动按电源键来休眠屏幕(使屏幕黑屏)或者唤醒屏幕(使屏幕亮屏),但是一些特殊需求要代码控制屏幕的亮屏和休眠,需求明确了,具体操作如下:


//监听灭屏广播,监听到就启动activity,写在server中

private BroadcastReceiver MyLockScreenReceiver = new BroadcastReceiver() {


@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("receiver--action="+intent.getAction());
/**
* ACTION_SCREEN_OFF表示按下电源键,屏幕黑屏
* ACTION_SCREEN_ON 屏幕黑屏情况下,按下电源键
*/
if ( intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
System.out.println("receiver.................");
keyguardManager = (KeyguardManager) context
.getSystemService(Context.KEYGUARD_SERVICE);
// 取消默认的锁屏
keyguardLock = keyguardManager.newKeyguardLock("");
keyguardLock.disableKeyguard();


startActivity(startIntent);
}
}
};


/**
* 启动闹玲,设置闹玲,发送广播唤醒屏幕,放在activity的oncreat中
* */
    private  void setAlarm(){
        Intent intent = new Intent("WakeUpScreen");
        intent.setClass(this, AlarmBroadcastReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);

alarmManager = (AlarmManager)getSystemService(Service.ALARM_SERVICE);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),10000, pendingIntent);
    }


    /**
     * 唤醒屏幕的广播,唤醒和休眠主要是用了电源管理器,上面的是根据具体需求,我的做法而已
     * */
    public static class AlarmBroadcastReceiver extends BroadcastReceiver {


@SuppressLint("Wakelock")
@Override
public void onReceive(Context context, Intent intent) {

// TODO Auto-generated method stub
//获取电源管理器对象  
PowerManager pm=(PowerManager) context.getSystemService(Context.POWER_SERVICE);
//获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag  
       final PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "bright"); 
String msg = intent.getAction();
if (msg.equals("WakeUpScreen")) {
viewFlipper.startFlipping();//我切换图片的代码,可以不要
LogUtils.i(Tag, "AlarmBroadcastReceiver"+"AlarmBroadcastReceiver");
       wl.acquire();//亮屏
       Handler handler = new Handler();//handle用于自动灭屏
       handler.postDelayed(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
wl.release();//灭屏
}
}, 3000);
}
}
}


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值