【问题标题】:Can ARKit (or ARSession) keep running in the background?ARKit(或 ARSession)可以在后台继续运行吗?
【发布时间】:2019-07-08 14:18:56
【问题描述】:

我的问题是 - ARSession 可以在后台运行 - 基本上我需要 ARKit 运行以及所有每帧信息和相机中心,但我不想在屏幕上呈现相机馈送 - 正如 @987654322 中发生的那样@。

不是专门在后台线程或进程中。

基本上,我只想使用来自 ARKit 的跟踪信息(图像 + 相机位置 + 相机欧拉角等),并且不想在 AR 本身或相机源中渲染任何东西。

在所有人开始攻击我之前 - 我知道 Apple 会在后台限制 GPU 进程 - 例如:

由于在执行过程中发生错误,命令缓冲区的执行被中止 执行。权限不足(从 背景)(IOAF 代码 6)

但是应该有一种方法可以使用ARKitARSession,而不需要摄像头供稿,而只需要跟踪信息,对吧?

【问题讨论】:

  • 如果没有后台模式,则不能在后台进行
  • 你的意思是一直在操作系统的后台,还是只是在你的应用运行时在后台?
  • @JulianMinde 就在应用程序运行时。可以肯定的是,Apple 不会允许它在后台运行任何占用 GPU 的进程。
  • @Scriptable 因此,为了使用跟踪信息 - 我需要在应用视图/屏幕上呈现相机源。似乎有点限制。
  • 当您的应用程序进入后台时,您的应用程序有有限的时间来做最后一分钟的处理/更新数据库/进行网络调用或其他任何事情,在很短的时间后应用程序将被暂停,然后这些进程(如果仍在运行)将被停止。因此,在这段时间之后,您将根本无法运行 AR 进程,无论是否在屏幕上

标签: ios swift augmented-reality wkwebview arkit


【解决方案1】:

一旦ARSCNSceneARSKScene 被完全覆盖,AR 跟踪就会停止。这有几个原因。

首先,ARKit 用于增强现实,而不是跟踪操作。如果您没有在屏幕上显示现实(摄像头馈送),那么您就无法增强现实。

其次,也是最重要的一点,Apple 关心用户隐私,如果您无需在屏幕上显示提要即可访问摄像头,那么用户将无法知道摄像头何时处于使用状态。这将使应用程序在用户不知情的情况下监视用户的可能性打开。苹果永远不会允许这样做。永远。

此外,AR 会严重消耗电池,因此只有在实际使用时才会运行。

根据您的 cmets,您似乎实际上并不想创建 AR 体验,因此可能有更好的方法来通过航向信息和加速度计获得您的目标。

【讨论】:

    猜你喜欢
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多