【问题标题】:How to Control the audio volume which is playing from Service?如何控制从服务播放的音量?
【发布时间】:2015-08-28 05:44:17
【问题描述】:

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

【问题讨论】:

  • 您使用哪个 API 进行播放?
  • 使用 Android MediaPlayer,音频在我的原始文件夹中。

标签: android service android-mediaplayer volume


【解决方案1】:

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

mediaPlayerA.setVolume(1.0f, 1.0f);

让其他玩家静音

mediaPlayerB.setVolume(0.0f, 0.0f);

【讨论】:

  • 简单但很有帮助。谢谢;.)
【解决方案2】:

不确定您如何实现 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);
}

然后,我将服务音乐的音量调回最大,因为它的活动中的音频播放现已完成。

同样,这一切都在测试中,我不希望像那样(在已发布的应用程序中)公开静态成员,我会以某种方式对其进行封装,因此会有某种类型的访问控制。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2013-03-27
    • 2018-04-13
    • 2021-04-09
    相关资源
    最近更新 更多