【问题标题】:How to control volume of different MediaPlayer objects?如何控制不同 MediaPlayer 对象的音量?
【发布时间】:2014-08-13 08:18:12
【问题描述】:

我正在创建一个应用程序,其中我的活动中有三个 MediaPlayer 对象。 Ler 称它们为 mp1、mp2 和 mp3。

我同时播放所有 3 个 MediaPlayer,因此用户应该能够设置每个声音的响度。

这就是我尝试的方式:

mp1.setVolume(volume1, 100);
mp2.setVolume(volume2, 100);
mp2.setVolume(volume3, 100);

volume1、volume2 和 volume3 是用户使用 SeekBar 设置的变量。我不确定 setVolume() 是如何工作的,所以我猜测第一个数字应该是它的响度,第二个应该是最大值。

但是,这根本不起作用,无论这些值是什么,每次播放的声音都是一样的。谁能告诉我如何控制每个 3 MediaPlayers 的音量?

【问题讨论】:

    标签: android android-mediaplayer


    【解决方案1】:

    根据documentation,您需要通过您的音量变量作为 setVolume() 方法中的两个参数。这样,左右声道音量都设置好了。此外,此值应介于 0.0 和 1.0 之间,而不是 0-100(基于我在您的示例代码中看到的)。但是,您可以轻松地将 0 到 100 之间的整数转换为 0.0 到 1.0 之间的整数,方法是将其除为浮点数:

    float volume1F = (float) volume1/100;
    

    然后,您可以这样做来设置音量:

    mp1.setVolume(volume1F, volume1F);
    

    【讨论】:

    • 非常感谢,它有效!我不明白为什么你应该传递与两个参数相同的变量(那么有 2 个参数有什么意义呢?)但我很高兴它有效 :)
    • @Whiz 这两个参数的原因是您可以在需要时控制每个单独通道(左右)的音量。例如,也许您想让声音只从左扬声器播放,以使声音看起来像是从那里发出的。在许多其他情况下,您可能希望拥有两个单独的卷,但这只是我脑海中的一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多