android - 当我的应用程序正在播放声音时,如何停止其他应用程序(收音机应用程序、播放器等)中的音频?
问题描述
我的应用程序包含音频。当其他一些应用程序(收音机、音乐……)在后台模式下播放时,我的应用程序的声音正在与该应用程序一起(一起)播放。当我的应用程序正在播放时,是否有能力停止该音乐应用程序?或者也许静音它或其他。
解决方案
我以前遇到过这个,这就是解决方案
AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
// Request audio focus for playback
int result = am.requestAudioFocus(focusChangeListener,
// Use the music stream.
AudioManager.STREAM_MUSIC,
// Request permanent focus.
AudioManager.AUDIOFOCUS_GAIN);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
// other app had stopped playing song now , so u can do u stuff now .
}
private OnAudioFocusChangeListener focusChangeListener =
new OnAudioFocusChangeListener() {
public void onAudioFocusChange(int focusChange) {
AudioManager am =(AudioManager)getSystemService(Context.AUDIO_SERVICE);
switch (focusChange) {
case (AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) :
// Lower the volume while ducking.
mediaPlayer.setVolume(0.2f, 0.2f);
break;
case (AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) :
pause();
break;
case (AudioManager.AUDIOFOCUS_LOSS) :
stop();
ComponentName component =new ComponentName(AudioPlayerActivity.this,MediaControlReceiver.class);
am.unregisterMediaButtonEventReceiver(component);
break;
case (AudioManager.AUDIOFOCUS_GAIN) :
// Return the volume to normal and resume if paused.
mediaPlayer.setVolume(1f, 1f);
mediaPlayer.start();
break;
default: break;
}}};
推荐阅读
- python-3.x - Yocto:为 SciKit-learn 创建配方
- sql - 初学者:LEFT JOIN 不该做什么?
- pandas - 熊猫数据框中两个不同长度的值之间的差异
- python-3.x - 我无法与 Kibana 服务器通信
- json - 使用 ExtJs 在 asp.net MVC 和 WebApi 应用程序中为 MacO 上的 Safari 序列化日期
- java - 如何在 Aerospike Spring Data 中使用 CAS 感知策略保存文档
- batch-file - 删除字母和特殊情况。仅显示特定行文本的数量
- android - 如何为移动设备开发微应用程序(ios和android)
- python - 使用正则表达式从熊猫数据框中的列中提取数据
- java - 在 weblogic 12c 中使用 validator.validate 时获取类转换异常