Java 安卓手机通话后呼叫AUDIOFOCUS\u丢失

Java 安卓手机通话后呼叫AUDIOFOCUS\u丢失,java,android,android-mediaplayer,Java,Android,Android Mediaplayer,电话铃响时,我正试图暂停媒体播放器。我使用来自android站点的示例代码。就是这样, public void onAudioFocusChange(int focusChange) { switch (focusChange) { case AudioManager.AUDIOFOCUS_GAIN: // resume playback if (mMediaPlayer != null && !mM

电话铃响时,我正试图暂停媒体播放器。我使用来自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;
        }
    }
当电话铃响时,发送音频聚焦\u丢失\u瞬态;没关系。通话结束时,发送音频聚焦增益,播放器继续播放;这也可以。但在发送AUDIOFOCUS\u增益后,AUDIOFOCUS\u损耗立即被发送。你知道它为什么会失去音频焦点吗?提前Thx。

需要检查两件事: 1) 例如,您是否有一个播放按钮,当单击该按钮时,它会请求焦点并开始播放?我有一次遇到一个问题,他们播放“滴答”声来提供点击反馈。发生这种情况时,他们会将音频焦点从我的应用程序中移除。在XML中,为该活动中的所有按钮将此值设置为false:

android:soundEffectsEnabled = 'false'

2) 检查是否安装了其他也请求焦点的媒体播放器应用程序。他们是否在失去焦点后立即请求聚焦?如果是这样的话,除了警告用户不要安装此应用程序之外,您对此无能为力

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

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

因此,当您打开文件时,它会获得音频焦点和侦听器,这是在使用focusChange
AudioManager.AUDIOFOCUS\u LOSS启动之前设置的。或者我得到一个音频聚焦增益=>音频聚焦损耗=>音频聚焦损耗=>音频聚焦损耗=>音频聚焦增益=>音频聚焦损耗=>音频聚焦损耗=>音频聚焦损耗=>。。。等等。你使用什么设备(用模拟器测试)?它有谷歌音乐吗?您能否验证它是否可以与其他音乐播放器(如谷歌音乐)配合使用?附加一个logcat。那里可能有有趣的事情。是否还有其他(旧的)音乐应用程序可以监听通话结束并“窃取”焦点?我也有同样的问题:我的设备是Galaxy Note N7000-android 4.0.3。还有一件事:在AUDIOFOCUS_LOSS被触发后,听众再也不会接到电话了!