如何控制从服务播放的音频音量?

5

我的应用程序同时播放两个音频,第一个来自服务,第二个来自活动。当第二个音频正在播放时,我想降低第一个音频的音量。停止第二个音频后,第一个音频的音量应该增加。


你正在使用哪些API进行播放? - JohanShogun
使用Android MediaPlayer,音频文件在我的raw文件夹中。 - Android Boy
2个回答

3

MediaPlayer有相应的方法。它可以设置左右声道的音量。 取消静音:

mediaPlayerA.setVolume(1.0f, 1.0f);

静音其他玩家

mediaPlayerB.setVolume(0.0f, 0.0f);

简单但有用。谢谢 ;.) - JanPl

1

不确定您如何实现MediaPlayer与服务相一致,但在我的测试中,我在服务类中创建了一个MediaPlayer实例。为了在服务类之外控制MediaPlayer实例的音量,我将MediaPlayer实例设置为静态成员。

所以在我的服务类中我这样做:

static MediaPlayer mediaPlayer = new MediaPlayer();

我在我的活动中(该活动有自己的音频播放)做了这件事:
MyOwnService.mediaPlayer.setVolume(0.1f, 0.1f);

因此,在我开始活动之前,我首先使用了这个语句来播放活动的音频。请注意,我没有将其静音(0.0f,0.0f)。您可以根据需要调整浮点数。它的范围在0.0f-1.0f之间。
在我的Activity中,我还实现了MediaPlayer.OnCompletionListener,以便我知道Activity的音频何时完成。此接口有一个要实现的方法onCompletion(MediaPlayer mp)。一旦音频完成,就会调用此方法。
因此,在我的活动中,我还做了这个:
@Override
public void onCompletion(MediaPlayer mp) {
    MyOwnService.mediaPlayer.setVolume(1.0f, 1.0f);
}

在这里,因为服务音乐内的音频播放已完成,我将服务音乐的音量提高到最大。

再次强调,这只是测试,我不想像这样公开静态成员(在发布的应用程序中),我会以某种方式将其封装起来,以便进行一定的访问控制。

希望这对您有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接