【问题标题】:Is it possible to control the volume of the default media player in Android from an Android application是否可以从 Android 应用程序控制 Android 中默认媒体播放器的音量
【发布时间】:2016-04-08 06:58:39
【问题描述】:

我有以下要求。

我正在开发一个 Android 移动应用程序。已为活动设置了特定持续时间的计时器。

  1. 当计时器持续时间还剩 10 秒完成(即变为零)时,我需要播放“哔”声 3 次,当计时器持续时间还剩 5 秒完成时“哔”声两次 & 一次计时器完成时发出“哔”声。

  2. 用户在使用 Android 移动应用程序时,可能正在使用 Android 手机的默认音乐播放器播放音乐。我需要实现逻辑,以便当从移动应用程序播放“哔”声时,我需要先降低默认音乐的音量,然后播放“哔”声,然后再次重置为原始音量“哔”声已播放了所需的次数。

我想知道这在技术上是否可行。

【问题讨论】:

    标签: android


    【解决方案1】:

    是的,您可以使用AudioManager 更改音乐音量。功能 [setStreamVolume][2] 是您正在寻找的。您要查找的流类型是AudioManager.STREAM_MUSIC

    [2]:http://developer.android.com/reference/android/media/AudioManager.html#setStreamVolume(int, int, int)

    【讨论】:

      【解决方案2】:

      实现这一点的一种方法是使用平台的功能,允许您的应用请求音频焦点,同时允许其他应用“躲避”。这使您可以告诉系统..“嘿,我要播放一些东西,告诉其他也在播放音频的应用程序可以继续播放,但要降低音量”。

      这是来自Managing Audio Focus 部分的相关示例代码和注释。

      当请求瞬态音频焦点时,您还有一个选项: 是否要启用“闪避”。通常,当一个 表现良好的音频应用程序失去了音频焦点,它立即将其静音 回放。通过请求允许闪避的瞬态音频焦点 你告诉其他音频应用他们可以保留 播放,前提是他们降低音量直到焦点返回 他们。

      AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);
      // Request audio focus for playback
      int result = am.requestAudioFocus(afChangeListener,
                                   // Use the music stream.
                                   AudioManager.STREAM_NOTIFICATION,
                                   //tell them it's ok to duck
                                   AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
      
      if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
          // Start playback.
      }
      

      我希望它对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多