适用于 Jetpack XR 的 ARCore

借助感知功能将数字内容带入现实世界。
最近更新时间 稳定版 候选版 Beta 版 Alpha 版
2024 年 12 月 12 日 - - - 1.0.0-alpha01

声明依赖项

如需添加对 Jetpack XR 的 ARCore 的依赖项,您必须将 Google Maven 制品库添加到项目中。如需了解详情,请参阅 Google 的 Maven 制品库

在应用或模块的 build.gradle 文件中添加所需工件的依赖项:

Groovy

dependencies {
    implementation "androidx.xr.arcore:arcore:1.0.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.xr.arcore:arcore:1.0.0-alpha01")
}

如需详细了解依赖项,请参阅添加 build 依赖项

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档

版本 1.0

版本 1.0.0-alpha01

2024 年 12 月 12 日

发布了 androidx.xr.arcore:arcore-* 1.0.0-alpha01

初始版本的功能

受现有 ARCore 库的启发,适用于 Jetpack XR 的 ARCore 库提供了将数字内容与真实世界融合的功能。该库包含动作跟踪、永久性锚点、点击测试以及带有语义标签(例如地板、墙壁和桌面)的平面识别。如需详细了解如何使用适用于 Jetpack XR 的 ARCore,请参阅开发者指南

  • Session:适用于 Jetpack XR 的 ARCore 在后台使用 Jetpack XR 运行时来实现其功能。您将使用会话与大多数 ARCore for Jetpack XR API 进行交互,因此请查看其文档。

  • Plane:使用平面图了解周围的世界。每个平面都有一个 Label,用于对其进行语义描述。您可以使用 subscribe 接收有关最新检测到的飞机的通知,也可以使用 state 接收有关特定飞机的更改通知。

  • Anchor:虚拟对象与现实世界位置之间的链接。锚点可以附加到空间中的特定位置(使用 create)或 Trackable(使用 createAnchor)。

    • 锚点可在多个会话中重复使用。您可以使用 persist 存储它们、使用 getPersistedAnchorUuids 枚举它们,以及使用 load 检索它们。请务必在不再使用这些设备后将其unpersist

    • 锚点可在 ARCore for Jetpack XR 和 Jetpack SceneCore 之间互操作。您可以使用锚点创建 AnchorEntity;如果您已有 AnchorEntity,则可以使用 getAnchor 检索其背后的锚点。

    • 使用 hitTest 提供自然的用户互动。点击测试使用 Ray 来确定它与哪些内容相交,并从该位置创建 Anchor。考虑从 InputEvent 执行点击测试。

已知问题

  • 调用 unpersist 与其 UUID 从 getPersistedAnchorUuids 返回的结果中移除之间可能会有延迟。

  • create 不会验证系统是否有足够的资源来返回新的锚点。创建过多锚点可能会导致崩溃。

  • 目前不支持保留之前保留和未保留的锚点。

  • 模拟器中使用此功能受支持,但行为可能不如在实际设备上运行时稳定。特别是,调用 create 可能会因原生代码错误而失败,并立即终止 activity。

  • 在某些情况下,调用 persist 时可能会错误地抛出 RuntimeException,并显示消息“未保留锚点”。在这些情况下,该函数仍会成功,并且锚点将被保留。我们建议使用 try 块封装对 persist 的调用,以作为一种权宜解决方法。