我的应用程序同时播放两个音频,第一个来自服务,第二个来自活动。当第二个音频正在播放时,我想降低第一个音频的音量。停止第二个音频后,第一个音频的音量应该增加。
我的应用程序同时播放两个音频,第一个来自服务,第二个来自活动。当第二个音频正在播放时,我想降低第一个音频的音量。停止第二个音频后,第一个音频的音量应该增加。
MediaPlayer有相应的方法。它可以设置左右声道的音量。 取消静音:
mediaPlayerA.setVolume(1.0f, 1.0f);
静音其他玩家
mediaPlayerB.setVolume(0.0f, 0.0f);
不确定您如何实现MediaPlayer
与服务相一致,但在我的测试中,我在服务类中创建了一个MediaPlayer
实例。为了在服务类之外控制MediaPlayer
实例的音量,我将MediaPlayer
实例设置为静态成员。
所以在我的服务类中我这样做:
static MediaPlayer mediaPlayer = new MediaPlayer();
MyOwnService.mediaPlayer.setVolume(0.1f, 0.1f);
@Override
public void onCompletion(MediaPlayer mp) {
MyOwnService.mediaPlayer.setVolume(1.0f, 1.0f);
}
在这里,因为服务音乐内的音频播放已完成,我将服务音乐的音量提高到最大。
再次强调,这只是测试,我不想像这样公开静态成员(在发布的应用程序中),我会以某种方式将其封装起来,以便进行一定的访问控制。
希望这对您有所帮助。