参考文章: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"/>