1

目前正在开发一个我们希望实现画中画 (PiP) 的应用程序。但是,我们想要继续的 UI 中的相机馈送是从 Sceneform 的 BaseArFragment 实现的。

我们面临的问题是这样的。进入画中画模式时,Android 生命周期会通过 onPause()。通常,这对于视频应用程序来说不是问题,因为 Android 建议在生命周期中将视频暂停移动到 onStop/onStart。然而,由于我们的 ArFragment 是通过 Sceneform 使用 BaseArFragment,所以 SceneView 的停止是在我们无法到达的 super.onPause 中。所以 super.onPause 正在调用 BaseArFragment.onPause,如下所示:

@Override
public void onPause() {
    super.onPause();
    stop();
}

private void stop() {
    if (!isStarted) {
      return;
    }

    isStarted = false;
    planeDiscoveryController.hide();
    arSceneView.pause();
}

因此,当我们调用 onPause 超级方法时,它正在暂停 arSceneView。

我们当前的技巧是检查画中画模式是否处于活动状态,如果是,则在调用 onPause 之后调用 onResume。感觉很奇怪,可能会产生无法预料的后果。有没有其他人能够让一个活跃的 Ar 片段在 PiP 模式下工作?如果是这样,怎么做?

有点相关,当我们从 PiP 模式返回时,与上面的 hack 相关,我们得到一个 DeadlineExceededException 和一个我们不确定如何修复的崩溃。

4

0 回答 0