Sto tentando di attivare la notifica LED, ad esempio il colore verde. Spegni lo schermo e ogni 5 secondi cambia colore in rosso (verde-> rosso, rosso-> verde). Penso di aver fatto tutto: in un servizio ho creato un timer che esegue il metodo per visualizzare la notifica.Modifica del colore della notifica LED ogni 5 secondi
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();
}
}
Qual è il problema? Il LED non cambia colore ... Quando spengo lo schermo, il colore è verde finché non accendo lo schermo e lo spengo di nuovo. Voglio iniziare questo servizio una volta, spegnere lo schermo e vedere la luce LED che cambia colore :).
BTW: Ho provato il mio telefono e può mostrare luci verdi e rosse, quindi non è il problema.
Grazie in anticipo e mi dispiace per il mio inglese.
non posso rispondere alla mia domanda quindi mi aggiungere questo qui:
Grazie per i vostri suggerimenti Olsavage, ho aggiunto ClearAll() per il mio codice, ma l'effetto è sempre lo stesso ; /. Ho anche aggiunto la registrazione alla mia applicazione (Log.i()). Sembra che il sistema interrompa il servizio quando spengo lo schermo (perché ??). E 'una cosa in questo modo:
schermo acceso: Il timer è in funzione e la notifica viene distribuito (ma non riesco a vedere led acceso, perché per vederlo devo spegnere lo schermo: P)
Fare clic sul pulsante di blocco: Il timer è quasi fermo, quindi il LED a volte cambia colore una volta.
Schermo spento: Il timer non funziona, il metodo TurnLedOn non è più in esecuzione. Il LED non cambia i colori.
Ora la domanda è: perché il servizio viene interrotto dopo aver spento lo schermo? Anche quando sto facendo una semplice operazione in esso (come l'incremento di una variabile). Forse dovrò impostare la sua priorità o qualcosa del genere?
Ho cambiato l'intervallo del timer a 100 ms e vedo che il codice è buono. Il LED ha cambiato i colori per 5-15 volte, ma poi si è fermato immediatamente. So che questa applicazione è completamente inutile ma voglio solo lasciarla funzionare :).
EDIT2: Penso che dovrò usare AlarmManager e PendingIntent per avviare il mio servizio ... Domani proverò a farlo.
Visualizza già il colore giusto :) Il problema è che non cambia colore quando lo schermo è spento. Per cambiare colore devo girare lo schermo del mio telefono e spegnerlo ... Voglio cambiare colore automaticamente. – krzysnick