我的应用播放两个音频,首先来自服务,第二个来自活动。我希望在播放第二个音频时减小第一个音频的音量。停止第二个音频后,第一个音频的音量应该增加。
答案 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);
}
在这里,我随后将服务音乐的音量提高到最大,因为其中的音频播放现已完成。
同样,这一切都在测试中,我不想公开这样的静态成员(在已发布的应用程序中),我会把它封装成一些如何,所以有某种类型的访问控制。
我希望这很有帮助。