私は、うまく動作するSimpleExoPlayerを使ってテストアプリケーションを実装しました。私は今、私のアプリにaudiofocusを追加したいと思います。Android - オーディオフォーカスを使用したSimpleExoPlayer
ユーザーがアプリを起動したときに音声フォーカスで再生を開始するのは簡単です。 onCreate()の最後に通常のコードを追加すると、
if (AudioManager.AUDIOFOCUS_REQUEST_GRANTED == audioManager.requestAudioFocus(...
が有効です。
しかし、私は、ユーザーが、私が思い出すPlaybackControlViewによってカプセル化された再生ボタンを押したときにaudiofocusを要求する問題を抱えています。
はSimpleExoPlayerとSimpleExoPlayerView(PlaybackControlView)を使用した場合どのように私は再生ボタンのクリックイベントをキャプチャすることができ、他の言葉ですか?
SimpleExoPlayer.setPlayWhenReady()をRedifiningすることは、SimpleExoPlayerのインスタンスがnewキーワードでインスタンス化されているのではなく、Factoryによって指定されているため可能ではないようです。
simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(...)
再生ボタンを使用してこの問題を解決する以外の方法はありますか?前もって感謝します。
UPDATE(17/02/17):
はgithub.com/google/ExoPlayer上のこの問題は、拡張としてラベル付けされます。 here
彼ら最初の答えは:
あなたはExoPlayerインスタンス(ExoPlayer.addListener)にリスナーを追加し、必要に応じて、オーディオフォーカスを取得または解放するために、リスナーのonPlayerStateChangedを実装することによってこれを行うことができます。 playWhenReadyが変更されるたびにonPlayerStateChangedが呼び出されることに注意してください。
このソリューションの小さな問題は、オーディオ/ビデオの再生が開始された後ではなく、以前からonPlayerStateChanged()が呼び出されていることです。私はそれを実装し、両方のオーディオを同時に再生する非常に短いオーバーラップはもちろんの耳から目立ちません。したがって、必要な場合には良い解決策と見なすことができます。 ExoPlayerチームがより良いソリューションを提供しているかどうか、いつお知らせします。