2017-02-14 162 views
3

我使用SimpleExoPlayer實現了一個測試應用程序,該應用程序正常工作。我想現在將audiofocus添加到我的應用程序。Android - 帶音頻焦點的SimpleExoPlayer

要在用戶啓動應用程序時開始播放音頻焦點很容易。在onCreate()末尾添加常用代碼:

 if (AudioManager.AUDIOFOCUS_REQUEST_GRANTED == audioManager.requestAudioFocus(... 

正常工作。

但我有問題,當用戶按下PlaybackControlView封裝的播放按鈕時,請求audiofocus我記得。

換句話說,如何在使用SimpleExoPlayer和SimpleExoPlayerView(PlaybackControlView)時捕獲播放按鈕點擊事件?

redifining simpleExoPlayer.setPlayWhenReady()似乎不可能,因爲SimpleExoPlayer的實例是由工廠提供的,而不是來自具有新關鍵字的實現。

simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(...) 

除了使用播放按鈕解決這個問題之外,還有其他想法嗎?提前致謝。

UPDATE(17/02/17):

上github.com/google/ExoPlayer這個問題被標記爲增強。 here

他們第一次的回答是:

您可以通過添加一個監聽到ExoPlayer實例(ExoPlayer.addListener)的應用以及聽衆的onPlayerStateChanged獲得或釋放音頻焦點,需要做到這一點。請注意,只要playWhenReady更改,就會調用onPlayerStateChanged。

該解決方案的一個小問題是onPlayerStateChanged()在音頻/視頻開始播放之後而不是之前被調用。我實現了它,當兩個音頻同時播放時,很短的重疊並不明顯。所以如果你需要的話,它可以被認爲是一個好的解決方案。當/如果ExoPlayer團隊提供更好的解決方案時,我會通知您。

回答