我有以下要求。
我正在开发Android移动应用程序。已为活动的特定持续时间设置了计时器。
当计时器持续时间为10秒完成(即变为零)时,我需要播放三次“嘟嘟”声,当计时器持续时间为5秒时,我需要发出两次“嘟嘟”声。定时器完成后发出“嘟嘟”声。
用户可能在使用Android移动应用程序时使用Android手机的默认音乐播放器播放音乐。我需要实现逻辑,以便当从移动应用程序播放“嘟嘟”声时,我需要先降低默认音乐的音量。然后发出“嘟嘟”的声音&在发出“嘟嘟”声后,再次重置为原始音量。
我想知道,这是否在技术上可行。
答案 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.
}
我希望它有所帮助。