2017-07-17 144 views
7

我想在用戶決定在電影中按'主頁'時在後臺繼續播放。在Android TV上啓用背景播放

我跟着這裏的指南:https://developer.android.com/training/tv/playback/options.html

而且寫了下面的代碼(工作):

@Override 
public void onPause() { 
    super.onPause(); 
    if (mVideoView.isPlaying()) 
    { 
     // Argument equals true to notify the system that the activity 
     // wishes to be visible behind other translucent activities 
     if (! requestVisibleBehind(true)) { 
      // App-specific method to stop playback and release resources 
      // because call to requestVisibleBehind(true) failed 
      stopPlayback(); 
     } 
    } else { 
     // Argument equals false because the activity is not playing 
     requestVisibleBehind(false); 
    } 
} 

@Override 
public void onVisibleBehindCanceled() { 
    // App-specific method to stop playback and release resources 
    stopPlayback(); 
    super.onVisibleBehindCanceled(); 
} 

我有幾個問題。 我發現註釋行if (! requestVisibleBehind(true))不會返回想要的結果。我很困惑。

  1. 不應該返回一些布爾值嗎?它如何啓用後臺播放?通過調試器,提到「如果」成功並停止播放器。不確定發生了什麼以及如何發生,所以也許有人可以解釋我。
  2. requestVisibleBehind()是@deprecated,onVisibleBehindCanceled()也是如此。有沒有其他的選擇?當我試圖尋找到什麼這些功能不放,我也驚訝自己,當我發現(這同樣適用於requestVisibleBehind()。

    public void onVisibleBehindCanceled() 
    { 
        throw new RuntimeException("Stub!"); 
    } 
    

在一個點上,我敢肯定,後臺播放的結果是從其他行爲,但是當我註釋掉以前提到的碎片代碼時,我不會得到想要的結果(如果我不評論它,我會得到它)

+0

如果您的代碼的工作是什麼,你真正想要 –

+1

如果您註釋掉'如果(!requestVisibleBehind(真))'和其相關的右括號,則該行'stopPlayback()'會(停止播放)FWIW ... – rogerdpack

+0

此鏈接可能對您有所幫助:http://corochann.com/android-tv-application-hands-on-tutorial-9-195.html –

回答

2

我不知道我是否正確理解你是什麼根據谷歌requestVisibleBehind(true)要求android操作系統,在進入後臺的情況下,這個活動應該繼續播放,布爾它返回ns是否可以指望可以繼續播放(這取決於操作系統)。 關於onVisibleBehindCanceled()當應用程序由用戶或操作系統完成或當requestVisibleBehind返回false時調用,實質上它所做的是給你500ms來處置應用程序使用的所有資源,在這500ms之後操作系統將銷燬您的應用程序活動以釋放這些資源。 所以總之,那些確實是你的應用程序繼續在後臺播放的責任。 關於棄用,請記住,android O具有使用PIP的能力,所以也許這就是更改的原因。

希望它可以幫助

+0

感謝您在Android TV上您可能不想使用PIP,但仍然在後臺顯示完整的視頻。 – Hrk