android 9.0 收到通知消息亮屏

1.接收到短信亮屏
  • 源码位置 :/vendor/mediatek/proprietary/packages/apps/Mms/src/com/android/mms/transaction/MessagingNotification.java
private static void updateNotification(
		...
	//sOpMessagingNotification.onUpdateNotification(isNew);
	wakeUpScreen(context);
}

/**
 * M: Wake up screen
 * @param context
 */
 private static void wakeUpScreen(Context context) {
 		...
 	 // 去掉在插入耳机的状况下才会唤醒判断
 	 //  if (hasInsertedHeadSet || headsetIsOn) {
 }
2.收到任何消息都亮屏
  • 源码位置:vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/NotificationEntryManager.java
// add Wake up screen
private PowerManager.WakeLock wakeLock;
private void wakeUpScreen() {
    if (wakeLock== null){
        wakeLock= mPowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, TAG);
        wakeLock.setReferenceCounted(false);
    }
    if (!mPowerManager.isScreenOn()) {
         wakeLock.acquire(3000);
         Log.d(TAG, "notification turn screen on");
        }
    }
}
//end

在addNotificationViews和updateNotificationInternal里面添加如下亮屏请求,当来了一条新通知或者更新一条通知的时候都会走到这两个逻辑

protected void addNotificationViews(NotificationData.Entry entry){
     if (entry == null) {
         return;
     }
     // Add the expanded view and icon.
     mNotificationData.add(entry);
     tagForeground(entry.notification);
     updateNotifications();
 +	 wakeUpScreen();
}

private void updateNotificationInternal(StatusBarNotification notification,
            NotificationListenerService.RankingMap ranking) throws InflationException {
            ...
     updateHeadsUp(key, entry, shouldPeek, alertAgain);
     updateNotifications();   
 +   wakeUpScreen(); // add   
}
8.0添加通知亮屏
  • vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
 protected void addNotificationViews(Entry entry) {
        if (entry == null) {
            return;
        }
        // Add the expanded view and icon.
        mNotificationData.add(entry);
		wakeUpScreen();
        updateNotifications();
 }
   ...
 public void updateNotification(StatusBarNotification notification, RankingMap ranking) throws InflationException {
	...
	updateHeadsUp(key, entry, shouldPeek, alertAgain);
	wakeUpScreen();         // add   
    updateNotifications();
 }

10/23更新,解决下载时,手机屏幕频繁唤醒
private void wakeUpScreen(StatusBarNotification notification) {
	if (notification.getPackageName().equals("com.android.providers.downloads")){
		return ;
	}
	...
}

protected void addNotificationViews(Entry entry) {
	...
	wakeUpScreen(entry.notification); 
}

public void updateNotification(StatusBarNotification notification, RankingMap ranking) throws InflationException {
	...
	wakeUpScreen(notification);
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值