在android中打电话后调用AUDIOFOCUS_LOSS

电话铃响时,我试图暂停媒体播放器。 我使用来自android网站的示例代码。 就像这样;

public void onAudioFocusChange(int focusChange) { switch (focusChange) { case AudioManager.AUDIOFOCUS_GAIN: // resume playback if (mMediaPlayer != null && !mMediaPlayer.isPlaying()) { mMediaPlayer.start(); mMediaPlayer.setVolume(1.0f, 1.0f); } break; case AudioManager.AUDIOFOCUS_LOSS: // Lost focus for an unbounded amount of time: stop playback and // release media player stopMediaPlayer(); break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: // Lost focus for a short time, but we have to stop // playback. We don't release the media player because playback // is likely to resume if (mMediaPlayer.isPlaying()) mMediaPlayer.pause(); break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK: // Lost focus for a short time, but it's ok to keep playing // at an attenuated level if (mMediaPlayer.isPlaying()) mMediaPlayer.setVolume(0.1f, 0.1f); break; } } 

当电话铃声AUDIOFOCUS_LOSS_TRANSIENT发送时; 这没关系。 当通话结束时,AUDIOFOCUS_GAIN被发送并且播放器继续播放; 这也是可以的。 但是在发送AUDIOFOCUS_GAIN之后,发送AUDIOFOCUS_LOSS。 有任何想法,为什么它失去了audio的重点? Thx提前。

Solutions Collecting From Web of "在android中打电话后调用AUDIOFOCUS_LOSS"

有两件事要检查:1)你有一个播放button,例如,点击时,请求焦点,并开始播放? 一旦他们发出“嘀嗒”的声音来提供点击反馈,我就遇到了一个问题。 发生这种情况时,他们会将audio从我的应用程序中移除。 在您的XML中,将该值设置为false,以查看该活动中的所有button:

 android:soundEffectsEnabled = 'false' 

2)检查是否安装了其他需要重点关注的媒体播放器应用程序。 他们在失去之后是否请求重点? 如果是这样的话,你可以做的只是警告你的用户不要安装这个应用程序。

可能它会帮助别人。 在项目中没有直接使用MediaPlayer,而是通过VideoView时,我遇到了这个问题。 打开文件时有以下代码

 AudioManager am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); am.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN); 

所以当你打开文件它获得audio焦点和侦听器被设置之前被focusChange AudioManager.AUDIOFOCUS_LOSS射击。