Cambiar el color de la notificación LED cada 5 segundos

Estoy tratando de activar la notificación LED, por ejemplo, el color verde. Apague la pantalla, y cada 5 segundos cambia ese color a rojo (verde-> rojo, rojo-> verde). Creo que lo he hecho todo: en un servicio he creado un temporizador que ejecuta el método para mostrar la notificación.

public class LEDService extends Service { private boolean TimerStarted; private Timer timer; private NotificationManager myNotificationManager; private long LastColor; public TurnLedOn() { Notification notify = new Notification(); notify.flags |= Notification.FLAG_SHOW_LIGHTS; notify.LedOnMS = 500; notify.LedOffMS = 0; //I in other example I also used array of colors if (LastColor == 0x00FF00) notify.LedARGB = 0xFF0000; else notify.LedARGB = 0x00FF00; LastColor = notify.LedARGB; } private MyTimerTask extends TimerTask { @Override public void run() { TurnLedOn(); } } @Override public void OnCreate() { TimerStarted = false; myNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); } @Override public int onStartCommand(Intent intent, int flags, int startId) { if (TimerStarted == false) { timer = new Timer(); timer.schedule(new MyTimerTask(), 0, 5000); } return START_STICKY; } @Override public IBinder onBind() { return null; } @Override public void onDestroy() { timer.close(); } } 

¿Cuál es el problema? El LED no cambia su color … Cuando apago la pantalla, el color es verde hasta que enciendo la pantalla y la vuelvo a apagar. Quiero iniciar este servicio una vez, apagar la pantalla y ver la luz LED cambiar de color :).

BTW: probé mi teléfono y puede mostrar luces verdes y rojas por lo que no es el problema.

Gracias de antemano y lo siento por mi inglés.

No puedo responder a mi propia pregunta así que voy a añadir esto aquí:

Gracias por tus sugerencias Olsavage , he añadido clearAll () a mi código, pero el efecto sigue siendo el mismo; /. También he agregado el registro a mi aplicación (Log.i ()). Parece que el sistema está deteniendo mi servicio cuando apago la pantalla (¿por qué?) . Es algo así:

Pantalla activada: El temporizador está en ejecución y la notificación se despliega (pero no puedo ver encendido, porque para verlo tengo que apagar la pantalla: P)

Haga clic en el botón de bloqueo: El temporizador está casi detenido, por lo que el LED a veces cambia de color una vez.

La pantalla está desactivada: el temporizador no funciona, el método TurnLedOn ya no se está ejecutando. El LED no cambia de color.

Ahora la pregunta es: ¿por qué mi servicio se detiene después de apagar la pantalla ? Incluso cuando estoy haciendo la operación simple en él (como el incremento de una variable). Tal vez tengo que establecer su prioridad o algo así?

He cambiado el intervalo del temporizador a 100ms y veo que el código es bueno. El LED cambió de color durante 5-15 veces, pero luego se detuvo inmediatamente. Sé que esta aplicación es completamente inútil, pero sólo quiero dejarlo funcionar :).

EDIT2: Creo que tendré que usar AlarmManager y PendingIntent para lanzar mi servicio … Mañana intentaré hacer eso.

De acuerdo, creo que lo averigüé. Se ha eliminado el temporizador. En su lugar, uso AlarmManager :).

He añadido a onCreate código siguiente:

 alarmmgr = (AlarmManager) getSystemService(ALARM_SERVICE); 

In onStartCommand:

 public int onStartCommand(Intent intent, int flags, int startId) { TurnLedOn(); //Turn LED On myPendingIntent = PendingIntent.getService(this, 0, intent, PendingIntent. FLAG_UPDATE_CURRENT); alarmmgr.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+5000, myPendingIntent); //Setting alarm to be off after 5seconds. return Service.START_NOT_STICKY; } 

En onDestroy:

 public void onDestroy() { notifymgr.cancel(LED_NOTIFICATION_ID); //Clearing notification alarmmgr.cancel(myPendingIntent); //Clear alarm } 

Creo que el código está bien, pero soy totalmente principiante en la programación de Android. Creo que he resuelto mi problema.

Necesita usar el formato ARGB. Intente establecer 0xFFFF0000 – rojo y 0xFF00FF00 – verde. Espero que esto ayude.

Hm, tal vez su notificación de edad no se aclaró? Intente utilizar myNotificationManager.clearAll (); Antes de myNotificationManager.notify (0, notifique);

Oh, también, trate de establecer notify.ledOffMS = 5000;

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.