覆盖默认通知led颜色

时间:2014-12-11 11:33:51

标签: android notifications android-notifications led

我正在开发一个应用程序,根据不同颜色的用户选择,为收件箱邮件和未接来电等事件提供通知。

收到收件箱信息后,我将开始闪烁LED(使用Notification.ledARGB)。

但问题是LED使用默认颜色闪烁(白色 - 这是消息的默认LED颜色),但不是我/用户设置的颜色。 如何避免或覆盖闪烁默认消息应用程序颜色并显示我的LED颜色?

我想提供更多有关我的问题的详细信息以获得更好的答案。 我正在做的是当我收到传入消息时,我正在接收广播接收器并捕捉动作并以某种颜色显示我的通知。通知显示在状态栏中,但颜色是白色(可能是消息应用程序的默认颜色)。

通过大量的研究,我开始知道无论哪个应用程序都会引发通知,通知指示颜色将闪烁,直到我们通过从通知栏滑动或点击取消通知。如果我们使用我们的自定义颜色上升通知,它将不会闪烁,直到之前的通知被取消。所以我想要做的是我想要停止闪烁默认颜色并开始闪烁我设置的颜色。

我正在使用LG Nexus 4和Lollipop。

2 个答案:

答案 0 :(得分:0)

您必须通过设置覆盖所有通知默认值:

notif.defaults = 0;

这是一段代码:

private void RedFlashLight()
{
    NotificationManager nm = ( NotificationManager ) getSystemService( NOTIFICATION_SERVICE );
    Notification notif = new Notification();
    notif.defaults = 0;
    notif.ledARGB = 0xFFff0000;
    notif.flags = Notification.FLAG_SHOW_LIGHTS;
    notif.ledOnMS = 100; 
    notif.ledOffMS = 100; 
    nm.notify(LED_NOTIFICATION_ID, notif);
}

答案 1 :(得分:0)

使用setLights方法进行通知构建。

Notification.Builder notificationBuilder = new Notification.Builder(context);
notificationBuilder.setLights(Color.CYAN, 5000, 5000);  //you can give your choice's color here.

确保使用此标志覆盖默认值:

Notification notification; 
notification.defaults = 0;

希望这有帮助。