Devo chiamare setVolumeControlStream
da un servizio che riproduce un suono tramite STREAM_SYSTEM
. Ovviamente in un'attività non è un problema, ma come posso farlo con un servizio?Chiamare setVolumeControlStream da un servizio
risposta
penso che questa libreria può fornire quello che vi serve:
Dagli sguardi di esso, questo non è possibile il modo in cui si sta cercando di farlo.
Come detto nella android reference
Il flusso audio suggerito sarà legato alla finestra di questa attività
Quindi con un servizio che non ha attività, non v'è nessuna finestra di legare la flusso audio a.
Tuttavia, sembra che si debba essere in grado di ricevere eventi chiave multimediali (inclusi i tasti del volume) da un'emittente come mostrato in here che consente di modificare il volume del servizio senza che un'attività sia visibile.
Ho esaminato questa soluzione e non sembra funzionare: non c'è modo di utilizzare i ricevitori di broadcast per ricevere eventi con i tasti del volume. Sul link che hai postato, android.intent.action.MEDIA_BUTTON viene utilizzato per i pulsanti di riproduzione, come play/pausa, successivo, precedente, ecc ... Ma nessun pulsante del volume. –
Il mio errore quindi, immagino che questo non sia possibile da un servizio. La ragione apparentemente è quindi quella di fermare le app che catturano gli eventi del volume e interferire con la capacità dell'utente di modificare il volume della suoneria/volume del sistema. C'è qualche ragione per cui non puoi usare STREAM_MUSIC? – Guykun
Nel mio caso, è perché vorrei disattivare l'audio di altre app mentre la mia app riproduce la musica. Poiché tutte le altre app utilizzano STREAM_MUSIC, la soluzione che ho trovato è stato disattivare l'audio STREAM_MUSIC e utilizzare un altro stream. –
Non è possibile se anche la libreria (anche se sembra carina). – Force