2016-07-01 25 views
7

Quindi sto riscontrando uno strano problema in cui la chiamata a AudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI) non attiva più una modifica del volume di sistema sul dispositivo che ho appena aggiornato a 6.0.AudioManager.adjustStreamVolume non funziona più su dispositivi 6+

Su tutti i dispositivi pre-6 questo codice funziona come previsto. Ho notato le modifiche ad AudioManager in cui setStreamVolume è stato deprecato, ma l'alternativa suggerita è quella che stavo già usando ...

All'inizio credevo che potesse essere un problema di autorizzazione dato che MODIFY_AUDIO_SETTINGS è elencato come un permesso pericoloso, ma Ho controllato e ContextCompat.checkSelfPermission(this, Manifest.Permission.MODIFY_AUDIO_SETTINGS) == PackageManager.PERMISSION_GRANTED (e non ci sono anche autorizzazioni relative all'audio nella pagina Impostazioni autorizzazione, quindi presumo che non sia così).

Ho provato l'altro metodo consigliato, adjustVolume(AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI), ma anche questo non ha prodotto risultati.

Quindi, per chiarire:

Nulla si verifica visivamente al momento della chiamata adjustStreamVolume/adjustVolume e AudioManager.getStreamVolume(AudioManager.STREAM_MUSIC) restituisce il valore inalterato come se fosse mai chiamato.

Se qualcuno ha qualche idea su questo, mi piacerebbe davvero ascoltarli proprio adesso.

Edit:

Da questo distacco, ho passato a utilizzare setStreamVolume(AudioManager.STREAM_MUSIC, value, AudioManager.FLAG_SHOW_UI) che funziona, anche se la documentazione dire che non dovrebbe più.

Piacerebbe alcune riflessioni su questo ...

Edit 2:

Aperto an issue da quando sono stato in grado di replicare su un altro dispositivo

+0

nella documentazione circa [AudioManager. setStreamVolume] (https://developer.android.com/reference/android/media/AudioManager.html#setStreamVolume%28int,%20int,%20int%29) non ha nulla a che fare. Esiste solo un commento sulla modalità Non disturbare. Non ho idea del perché 'adjustStreamVolume' non funzioni. – Desirius

+0

Grazie per essere tornato da me. Mi riferisco alla nota nelle 6,0 modifiche: https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-audiomanager-Changes – Guardanis

risposta

0

solo perché è sconsigliato, non dovrebbe significare che dovrebbe smetti di lavorare. È ancora supportato per compatibilità con le versioni precedenti.

Assicurati di ottenere la maniglia corretto per l'AudioManager:

AudioManager audioManager =(AudioManager)getSystemService(Context.AUDIO_SERVICE); 

Quindi, utilizzare questo AudioManager per impostare il volume flusso per il valore desiderato:

audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, desiredVolume, 0); 
+0

Ciao Hazem, grazie per aver risposto. Sfortunatamente i documenti dicono che non è più supportato; non solo deprecato, ma a quanto pare non è il caso (se date un'occhiata alla mia modifica) dove setStreamVolume funziona. Tuttavia, la domanda riguarda il motivo per cui adjustStreamVolume non lo fa poiché è quello che è raccomandato dai documenti, ma al momento non funziona sui dispositivi 6+ che ho provato – Guardanis

+0

Bene, a volte capita che le funzionalità non più supportate vengano rotto dal tempo, perché non esistono più nei loro piani di test. Quindi, se "regolare" non funziona e "impostare" funziona, quindi sei bloccato con "set" ..e prega che "set" rimanga in funzione in futuro :) –

+0

Grazie ancora per la risposta, ma questo non risponde alla domanda in quanto si tratta di un bug nella piattaforma o di un errore nella documentazione. – Guardanis

Problemi correlati