在android中拨打电话后调用了AUDIOFOCUS_LOSS

syl*_*loc 10 java android android-mediaplayer

我正试图在手机响铃时暂停媒体播放器.我使用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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

当手机响铃时发送AUDIOFOCUS_LOSS_TRANSIENT; 这没关系.当通话结束时,发送AUDIOFOCUS_GAIN并且播放器继续播放; 哪个也行.但是在发送AUDIOFOCUS_GAIN之后,发送了AUDIOFOCUS_LOSS.有什么想法它失去音频焦点?Thx提前.

aja*_*n81 3

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

android:soundEffectsEnabled = 'false'
Run Code Online (Sandbox Code Playgroud)

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