的Android的MediaPlayer忽略它的内部容积,当系统的体积变化
这里是我的情况:的Android的MediaPlayer忽略它的内部容积,当系统的体积变化
我有一个媒体播放器播放音乐在Android应用程序。我发现使用某些耳机时,即使音量设置为最低设置,音量也非常大。因此,我希望将所有音量级别的音乐音量改为通常情况下的10%(实际上,这个值当然是由用户定义的)。
以下作品完美:
mediaPlayer.setVolume(0.1f, 0.1f);
的音乐的音量,现在是在一个良好的水平的收听。但是,如果用户现在使用音量摇杆改变音量(从而改变音乐流音量),媒体播放器会按照预期改变音量,但它似乎也会将'setVolume'参数重置为1.0,导致音量剧烈变化。将音量设置回0.1将音量设置为应该如何(这是当前音乐流音量的10%)。
引述的MediaPlayer.setVolume方法Android的文档:
这个API被推荐用于在应用程序中平衡音频流输出
你怎么能做到这一点,如果它得到每当系统音量改变时重置为1.0?
任何帮助非常感激。谢谢。
我的建议是尝试重写的onkeydown(...),并通过获取使用AudioManager对象手动调节音量:
getSystemService(AUDIO_SERVICE).adjustVolume(ADJUST_RAISE);
或任何你正在使用来改变音量。通过覆盖音量摇杆按钮行为,您将删除导致问题的任何默认行为。
感谢您的评论。重写onKeyUp/Down(然后将MediaPlayer对象重新设置为正确的音量)稍有改进,但存在两个问题: 1:该活动必须处于焦点状态(通常情况下,音乐播放器不会播放服务) 2:如果正确的视图确实有焦点,在一秒钟之内,音量在纠正之前变得非常响亮。 但是再次感谢。无论如何,我想我需要一套Android手机来测试这种事情...... – 2010-06-07 21:49:25
在API中有一些其他adjustVolume方法,以特定的方式影响特定的流,所以你可能想检查出来(我不知道如果他们会对你有任何帮助)。 – mtmurdock 2010-06-08 03:44:03
这可能是由于英雄上的错误。在版本1.5/2.01/2.1上使用仿真器时,音量级别不会重置。 – 2010-06-05 18:55:38