2013-11-27 7 views
15

Ich bin interessiert, das aktuelle Volumen eines MediaPlayer abzurufen, aber keine Methode wie 'getVolume()' darauf zu sehen. Es gibt eine setVolume(), daher bin ich etwas verwirrt, warum sie nicht auch eine Möglichkeit bieten, diese Eigenschaft zu lesen.Android MediaPlayer erhalten Volumen

sah ich einige andere Antworten, die Audio-Manager zu verwenden, vorgeschlagen, um die Lautstärke zu lesen:

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

    float volume = (float)volumeLevel/maxVolume; 

Dies scheint jedoch das Gerät Lautstärke für alle Musik zurückzukehren, und nicht das Volumen, das ich Einstellung mit " setVolume() '... gibt es eine Möglichkeit, die Lautstärke direkt von einem MediaPlayer zu beziehen? Ich dachte, dass ich vielleicht etwas mit getAudioSessionId() machen müsste. Vielen Dank.

+0

Kennen Sie diesen Beitrag? http://stackoverflow.com/questions/4593552/how-do-you-get-set-media-volume-no-ringstone-volume-in-android – Joel

+0

Ja getStreamVolume() scheint immer den gleichen Wert auch nach I zurück Stellen Sie das Volume manuell mit MediaPlayer.setVolume(); –

+0

Haben Sie eine Lösung dafür gefunden? AFAIK, Sie müssen die aktuellen Lautstärkepegel auf Ihren eigenen Variablen speichern. –

Antwort

2

Soweit ich weiß, ist dies mit dem Standard MediaPlayer nicht möglich. Sie müssen es erweitern und Ihre eigene Methode getVolume() zusammen mit einer Variablen hinzufügen, die das aktuelle Volume verfolgt.

+1

Wie können wir die aktuelle Lautstärke verfolgen? Ich habe versucht, 'setVolume' in einer Klasse zu überschreiben, die' MediaPlayer' erweitert, aber diese Methode wird nie aufgerufen. – DenisGL

+0

Ich denke, es gibt keine 'getVolume()' Methode – Leenah