10

電話が鳴ったときにメディア プレーヤーを一時停止しようとしています。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 が送信され、プレイヤーはプレイを続けます。これもOKです。しかし、AUDIOFOCUS_GAIN を送信した直後に AUDIOFOCUS_LOSS が送信されます。オーディオのフォーカスが失われている理由はありますか? 事前にThx。

4

2 に答える 2

3

確認すべき 2 つの点: 1) たとえば、クリックするとフォーカスをリクエストして再生を開始する再生ボタンがありますか。クリックのフィードバックを提供するために「カチカチ」という音を鳴らすという問題がありました。それが起こったとき、彼らは私のアプリからオーディオフォーカスを奪いました. XML で、そのアクティビティのすべてのボタンに対して、この値を false に設定します。

android:soundEffectsEnabled = 'false'

2) フォーカスを要求する他のメディア プレーヤー アプリのインストールを確認します。彼らはそれを失った直後にフォーカスを要求していますか? その場合、このアプリをインストールしないようにユーザーに警告する以外に、これについてできることはあまりありません。

于 2012-10-04T06:15:28.917 に答える