是否可以从Android应用程序控制Android中默认媒体播放器的音量

时间:2011-01-23 18:03:20

标签: android

我有以下要求。

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

  1. 当计时器持续时间为10秒完成(即变为零)时,我需要播放三次“嘟嘟”声,当计时器持续时间为5秒时,我需要发出两次“嘟嘟”声。定时器完成后发出“嘟嘟”声。

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

以下是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.
}

我希望它有所帮助。