在Android TV上启用后台播放

时间:2017-07-17 09:13:59

标签: android android-tv

当用户决定按下“主页”时,我希望在后台继续播放。在电影中。

我按照指南进行了操作:https://developer.android.com/training/tv/playback/options.html

并编写以下代码(WHICH WORKS):

@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. 该行不应该返回一些布尔值吗?如何启用后台播放?使用调试器,提到" if"是成功的,它会阻止玩家。不太确定发生了什么以及如何发生,所以也许有人可以解释我。
  2. requestVisibleBehind()是@deprecated,onVisibleBehindCanceled()也是如此。还有其他选择吗?当我试着研究这些函数的作用时,我发现时也会感到惊讶(requestVisibleBehind()同样如此。

    public void onVisibleBehindCanceled() 
    {
        throw new RuntimeException("Stub!");
    }
    
  3. 有一次,我很确定背景播放结果来自其他动作,但是当我评论出之前提到的代码碎片时,我没有得到想要的结果(如果我不这样做,我会得到这样的结果)评论它。)

1 个答案:

答案 0 :(得分:3)

我不知道我是否正确理解你的要求。根据谷歌的body{ height: 100vh; padding: 0; margin: 0; } 对Android操作系统的请求,如果要进入后台这个活动应该继续播放,它返回的布尔值是你是否可以指望它可以继续播放(这是决定的)由OS)。 关于requestVisibleBehind(true),当应用程序由用户或操作系统完成或者onVisibleBehindCanceled()返回false时调用它,基本上它的作用是给你500ms来处理所使用的所有资源你的应用程序,在那500ms之后,操作系统将破坏你的活动以释放这些资源。 总而言之,这些确实是负责您的应用程序继续在后台播放的人。 关于弃用,请记住android O具有使用PIP的能力,因此可能是这种改变的原因。

希望有所帮助