2013-11-27 27 views
15

Sono interessato a recuperare il volume corrente di un MediaPlayer, ma non vedo alcun metodo come "getVolume()" su di esso. C'è un setVolume(), quindi sono un po 'confuso sul motivo per cui non forniscono anche un modo per leggere questa proprietà.Android MediaPlayer ottiene volume

Ho visto alcune altre risposte che hanno suggerito di utilizzare AudioManager per leggere il volume:

int volumeLevel = am.getStreamVolume(AudioManager.STREAM_MUSIC);  
    int maxVolume = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC); 

    float volume = (float)volumeLevel/maxVolume; 

Tuttavia, questo sembra restituire il volume del dispositivo per tutta la musica, e non il volume che sto impostazione con ' setVolume() '... c'è un modo per ottenere il volume direttamente da un MediaPlayer? Stavo pensando che forse ho bisogno di fare qualcosa con getAudioSessionId(). Grazie.

+0

Hai visto questo post? http://stackoverflow.com/questions/4593552/how-do-you-get-set-media-volume-not-ringtone-volume-in-android – Joel

+0

Yea getStreamVolume() sembra restituire sempre lo stesso valore anche dopo I imposta manualmente il volume con MediaPlayer.setVolume(); –

+0

Hai trovato una soluzione per questo? AFAIK, devi memorizzare i livelli di volume attuali sulle tue variabili. –

risposta

2

Per quanto ne so, questo non è possibile con il MediaPlayer predefinito. È necessario estenderlo e aggiungere il proprio metodo getVolume() insieme a una variabile che tiene traccia del volume corrente.

+1

Come possiamo tracciare il volume corrente? Ho provato a sovrascrivere 'setVolume' in una classe che estende' MediaPlayer', ma questo metodo non viene mai chiamato. – DenisGL

+0

Penso che non ci sia il metodo 'getVolume()' – Leenah

Problemi correlati