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 Heads-up - Android Lollipop
  • La aplicación se reinicia si selecciona la aplicación de las aplicaciones recientes sólo cuando se inicia la actividad desde Notification
  • Google maneja ahora la mensajería de whatsapp
  • RemoteView no muestra botones en la notificación personalizada
  • Configuración de notificaciones de Android Lollipop App
  • Cómo manejar correctamente startForegrounds dos notificaciones
  • Java.lang.NoSuchMethodError: android.app.Notification $ Builder.addAction
  • ¿Cómo puedo evitar la actualización de notificaciones parpadeantes mientras cambia el botón
  • Notificaciones de Firebase que no funcionan en Android Emulator
  • Fragmento de la pestaña específica de apertura de Android en la notificación
  • Obtenga el valor de RemoteMessage del método FCM onMessageReceived
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.