Cambiar el color del LED para las notificaciones

Estoy básicamente experimentando con el desarrollo de Android, y un par de días me encontré con esta aplicación llamada " Go SMS Pro ", que, entre otras cosas, puede configurar notificaciones en diferentes colores (azul, verde, naranja, rosa y luz) azul). Por lo tanto, he intentado hacerlo yo mismo en mi propia aplicación, sin embargo no puedo cambiar ni el color ni el parpadeo interno del LED. Actualmente utilizo este código:

public class MainActivity extends Activity { static final int NOTIFICATION_ID = 1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(buttonOnClick); } public OnClickListener buttonOnClick = new OnClickListener() { @Override public void onClick(View v) { String ns = Context.NOTIFICATION_SERVICE; NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns); Notification notification = new Notification(R.drawable.icon, "Hello", System.currentTimeMillis()); notification.flags = Notification.FLAG_SHOW_LIGHTS | Notification.FLAG_AUTO_CANCEL; notification.ledARGB = Color.BLUE; notification.ledOnMS = 1000; notification.ledOffMS = 300; Context context = getApplicationContext(); CharSequence contentTitle = "My notification"; CharSequence contentText = "Hello World!"; Intent notificationIntent = new Intent(MainActivity.this, MainActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(MainActivity.this, 0, notificationIntent, 0); notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); mNotificationManager.notify(NOTIFICATION_ID, notification); } }; } 

Pero como he dicho, no funciona de la manera que yo quiero; En lugar de él apenas parpadea en verde regular con el retraso del defecto, y no el que he fijado en mi código.

¿Puede alguien ver lo que está mal con mi código, o saber si tengo que hacer algo más para lograr esto?

8 Solutions collect form web for “Cambiar el color del LED para las notificaciones”

Puede utilizar este código:

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

En lugar de usar el valor de ARGB como muestra de ejemplo, puede utilizar la propiedad int dentro de la clase android.graphics.Color para obtener el color también (por ejemplo, Color.WHITE )

¿Has intentado: .setLights (Color.BLUE, 500, 500)?

Funciona bien en S3, N5, N4, Nexus uno también ..

Leds son una característica bastante no estándar en los teléfonos Android. Si usted depende de ellos, se perderá un buen pedazo de la base de usuarios (tenga en cuenta, por ejemplo, los teléfonos SGS, que ni siquiera tienen leds).

Dicho esto, id el campo int ledARGB no era útil, es posible que tenga que buscar en alguna llamada JNI de ese APK. Mi conjetura es que tendrá diferentes métodos dependiendo del dispositivo en el que se está ejecutando.

Intente usar el color hexadecimal, incluya un valor alfa y defina el valor predeterminado en 0:

 notification.defaults = 0; notification.ledARGB = 0xff0000ff; 

Además, la interfaz de notificación dice lo siguiente:

 public int ledARGB Since: API Level 1 The color of the led. The hardware will do its best approximation. 

Supongo que su hardware tiene todos los colores, pero puede que no.

Echa un vistazo a la fuente a continuación.

 NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(ctx) .setPriority(Notification.PRIORITY_HIGH) .setSmallIcon(getNotificationIcon()) .setColor(0xff493C7C) .setContentTitle(ctx.getString(R.string.app_name)) .setContentText(msg) .setDefaults(Notification.DEFAULT_SOUND) .setLights(0xff493C7C, 1000, 1000) .setStyle(new NotificationCompat.BigTextStyle().bigText(styledMsg)); 

FLAG_SHOW_LIGHTS y Notification.Builder.setLights (int, int, int); Están desfasados ​​desde Android O (nivel 26 de la API) Si planea utilizar esta función en el nivel 26 de la API o superior, consulte NotificationChannel

Ejemplo :

 NotificationChannel mChannel = new NotificationChannel(id, name, importance); ..... ..... mChannel.enableLights(true); // Sets the notification light color for notifications posted to this // channel, if the device supports this feature. mChannel.setLightColor(Color.RED); 

Pero en esta nueva implementación es posible que no tenga control sobre LED en milli-segundos y LED apagado mili segundos , dependerá del hardware.

Soporte para los colores LED es muy irregular. Intente desenchufar su cable USB y asegurarse de que ninguna otra aplicación está tratando de modificar el LED al mismo tiempo. También apague la pantalla.

He probado mi código a continuación, y la luz funciona bien para mí. Mi móvil es Nexus 6P:

 mBuilder.setContentTitle("APP_NAME") .setContentText(msg) .setContentIntent(PendingIntent.getActivity(mCtxt, UUID.randomUUID().hashCode(), new Intent(mCtxt, ReceivePushActivity.class), Notification.FLAG_AUTO_CANCEL)) .setWhen(System.currentTimeMillis()) .setPriority(Notification.PRIORITY_DEFAULT) .setAutoCancel(true) //.setDefaults(Notification.DEFAULT_ALL) .setVibrate(new long[] {0, 1000, 200,1000 }) .setLights(Color.MAGENTA, 500, 500) .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)) .setSmallIcon(R.mipmap.notify_logo); Notification ntf = mBuilder.build(); // ntf.flags = Notification.DEFAULT_ALL; // ntf.flags = Notification.FLAG_ONLY_ALERT_ONCE; // ntf.flags = Notification.FLAG_AUTO_CANCEL; mNotificationManager.notify(notifyId, ntf); 

Significado, elimine la configuración 'DEFAULT_ALL'.

  • Notificación android gran imagen no funciona
  • Fondo de icono de notificación grande
  • Notificación específica de Android Wear
  • Android: las notificaciones agrupadas y el resumen siguen apareciendo por separado en 4.4 y posteriores
  • Diseños de notificaciones personalizadas y colores de texto
  • Notificación personalizada de cancelación automática mediante RemoteView
  • Cómo corregir: android.app.RemoteServiceException: Notificación incorrecta enviada desde el paquete *: No se pudo crear el icono: StatusBarIcon
  • Configuración de notificaciones de Android Lollipop App
  • Cómo suprimir la notificación en la pantalla de bloqueo en Android 5 (Lollipop), pero dejarlo en el área de notificación?
  • Android: ¿Notification.DEFAULT_VIBRATE requiere permiso de vibración?
  • La notificación no se elimina al hacer clic en el botón de acción incluso después de proporcionar el ID de notificación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.