【发布时间】:2012-03-09 09:42:11
【问题描述】:
我的应用程序正在运行一项服务,每小时发送一次通知。这工作正常,因为我的通知每小时都会听到声音和振动,但我也希望我的通知也能点亮我的屏幕。但是出现通知时我无法点亮屏幕。
【问题讨论】:
标签: android notifications screen wakelock wakeup
我的应用程序正在运行一项服务,每小时发送一次通知。这工作正常,因为我的通知每小时都会听到声音和振动,但我也希望我的通知也能点亮我的屏幕。但是出现通知时我无法点亮屏幕。
【问题讨论】:
标签: android notifications screen wakelock wakeup
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = pm.isScreenOn();
Log.e("screen on.................................", ""+isScreenOn);
if(isScreenOn==false)
{
WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.ON_AFTER_RELEASE,"MyLock");
wl.acquire(10000);
WakeLock wl_cpu = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"MyCpuLock");
wl_cpu.acquire(10000);
}
【讨论】:
PARTIAL_WAKE_LOCK 不会自行唤醒设备,the Android docs state 不能与ACQUIRE_CAUSES_WAKEUP 一起使用
有我的解决方案:
createNotification(); //your implementation
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = Build.VERSION.SDK_INT >= 20 ? pm.isInteractive() : pm.isScreenOn(); // check if screen is on
if (!isScreenOn) {
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "myApp:notificationLock");
wl.acquire(3000); //set your time in milliseconds
}
【讨论】:
wl.release()一样释放唤醒锁吗?