2013-11-27 73 views
15

我很想检索MediaPlayer的当前音量,但没有看到任何像'getVolume()'这样的方法。有一个setVolume(),所以我有点困惑,为什么他们不提供读取这个属性的方法。Android MediaPlayer获得音量

我看到建议使用AudioManager读取卷的一些其他答案:

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

    float volume = (float)volumeLevel/maxVolume; 

然而,这似乎返回该设备体积为所有的音乐,而不是容积我与'设置setVolume()'...有没有办法直接从MediaPlayer获取音量?我想也许我需要用getAudioSessionId()做些什么。谢谢。

+0

你见过这篇文章吗? http://stackoverflow.com/questions/4593552/how-do-you-get-set-media-volume-not-ringtone-volume-in-android – Joel

+0

是的getStreamVolume()似乎总是返回相同的值,即使在我使用MediaPlayer.setVolume()手动设置音量; –

+0

您是否找到了解决方案? AFAIK,你必须存储当前的音量水平在你自己的变量。 –

回答

2

据我所知,这是默认的MediaPlayer不可能的。您需要扩展它并添加您自己的getVolume()方法以及跟踪当前音量的变量。

+1

我们如何追踪当前的数量?我试图在扩展'MediaPlayer'的类中重写'setVolume',但是这个方法从来没有被调用过。 – DenisGL

+0

我认为没有'getVolume()'方法 – Leenah