5

Sto cercando di interrompere/eliminare una notifica in primo piano per un servizio per un mediaplayer, molto simile all'implementazione di Google per Google Music.Come faccio a rimuovere una notifica in primo piano in Android Lollipop?

Ad esempio in Google Music, se si sta riproducendo musica, la notifica non può essere cancellata. Tuttavia, se metti in pausa la musica, può farlo.

Questo è completamente diverso da come è implementato su Android 4.4, dove la notifica inizia solo quando si esce dall'app e si rimuove quando si torna all'app. Non riesco a vedere come implementare questo considerando i requisiti per un servizio di avere una notifica.

Qualsiasi aiuto sarebbe molto apprezzato.

risposta

7

Come rimuovere una notifiacti in primo piano in Android Lollipop?

È possibile rimuovere il proprio piano Notification chiamando stopForeground() dal Service che ha chiamato startForeground().

Ad esempio in Google Music, se si sta riproducendo musica, la notifica non può essere cancellata. Tuttavia, se metti in pausa la musica, può farlo.

Presumibilmente, stanno aggiornando il valore setOngoing() per la Notification sulla base se la musica è in riproduzione.

+0

Quindi l'idea è che se torni nell'app non è necessario avere una notifica in esecuzione mentre stai effettivamente utilizzando l'app? Google lo fa in modo diverso con Google Music in Android Lollipop, in cui la notifica viene sempre eseguita, indipendentemente dal fatto che tu sia nell'app o meno. So che probabilmente è una cosa banale, ma nello sviluppo della mia app l'ho trovato e volevo capire meglio perché. E grazie per la tua risposta, molto apprezzata. –

+2

@DumonKri: se l'interfaccia utente è in primo piano, un servizio in primo piano non aggiunge nulla alla priorità del processo. E, se l'interfaccia utente è in primo piano, l'utente probabilmente ha un modo migliore di interagire con la tua app attraverso quell'interfaccia utente piuttosto che attraverso la tua "Notifica". – CommonsWare

+0

Grazie a @CommonsWare, questo ovviamente ha senso. È stato il modo in cui Google lo implementa in modo diverso in Google Music su Android 4.4 e 5 che mi ha confuso. Forse cambierà con gli aggiornamenti dell'app per Lollipop. –

3

È possibile anche rimuovere la notifica in modo ingannevole:

  • avvio del servizio prima con startForeground(1, new Notification());
  • Iniziamo 2 ° servizio con startForeground(1, new Notification()); e subito fermarlo

Di conseguenza prima di servizio è ancora in esecuzione in primo piano ma la notifica è andata via grazie all'arresto del secondo servizio. L'ho trovato per caso :)

+0

Questo è un grande trucco, ma sfortunatamente è stato corretto in Android 7.1. – Sam