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

时间:2015-08-28 05:44:17

标签: android service android-mediaplayer volume

我的应用播放两个音频,首先来自服务,第二个来自活动。我希望在播放第二个音频时减小第一个音频的音量。停止第二个音频后,第一个音频的音量应该增加。

2 个答案:

答案 0 :(得分:3)

MediaPlayer有方法。它设置左右声道的音量。 静音:

mediaPlayerA.setVolume(1.0f, 1.0f);

将其他玩家静音

mediaPlayerB.setVolume(0.0f, 0.0f);

答案 1 :(得分: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);
}

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

同样,这一切都在测试中,我不想公开这样的静态成员(在已发布的应用程序中),我会把它封装成一些如何,所以有某种类型的访问控制。

我希望这很有帮助。