Android N上验证:
这个修改为客制化的需求,可以在BaseStatusBar.java定义一个wakelock,并初始化:
import android.os.PowerManager;
private PowerManager.WakeLock mNotificationWakeLock;
mNotificationWakeLock = mPowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, TAG);
mNotificationWakeLock.setReferenceCounted(false);
import android.os.PowerManager;
private PowerManager.WakeLock mNotificationWakeLock;
mNotificationWakeLock = mPowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, TAG);
mNotificationWakeLock.setReferenceCounted(false);
方案一:
在addNotificationViews和updateNotificationViews里面添加如下亮屏请求。当来了一条新通知或者更新一条通知的时候都会走到这两个逻辑:
//added
if (!mPowerManager.isScreenOn() && entry.key != null && entry.key.contains("com.android.mms")){//可以根据需要亮屏的应用,增加不同的包名判断。
mNotificationWakeLock.acquire(5000);
Log.d(TAG, "special app notification turn screen on");
}
//added end
在addNotificationViews和updateNotificationViews里面添加如下亮屏请求。当来了一条新通知或者更新一条通知的时候都会走到这两个逻辑:
//added
if (!mPowerManager.isScreenOn() && entry.key != null && entry.key.contains("com.android.mms")){//可以根据需要亮屏的应用,增加不同的包名判断。
mNotificationWakeLock.acquire(5000);
Log.d(TAG, "special app notification turn screen on");
}
//added end