性能注意事项

为了打造具有吸引力的 AR 用户体验,您必须确保支持 AR 的应用能够出色地运行。

请确保您的应用:

  • 响应用户输入,包括触摸手势和设备动作。
  • 以一致且稳定的帧速率呈现。用户通常更喜欢稳定的帧速率,而不是可变的较高帧速率。
  • 最大限度地减少电池电量消耗,从而让您的用户能够全天使用设备处理其他任务,或者延长用户的 AR 体验。
  • 打造令人信服的 AR 体验,其中 AR 生成的内容相对于环境看起来很稳定,并与现实环境融为一体。

性能最佳做法

为了打造更具吸引力的 AR 体验,在设计时请遵循以下最佳做法。

使用锚定广告来改善跟踪效果

虽然可以使用世界空间坐标放置 3D 内容,但请始终尽可能使用锚点。即使底层世界空间坐标发生改变,ARCore 也能确保锚点相对于世界看起来是稳定的,并且每当 ARCore 更新其对世界的理解时,ARCore 都会锚定锚点。

未附加到锚点的虚拟对象偶尔会跳跃,相对于环境看起来不太稳定。这会降低 AR 体验对用户的吸引力。

考虑特定于设备的性能特征

支持 ARCore 的设备涵盖了各种硬件和性能特征。设备性能可能会因以下因素而异:

  • 设备 CPU/GPU,时钟速度
  • 可用内存和带宽
  • 相机/IMU 传感器质量
  • 其他硬件差异
  • 操作系统和设备驱动程序

我们建议在将代表用户使用的各种设备类别上测试您的应用。

停用未使用时的 CPU 密集型功能

某些 ARCore 功能在启用时会增加 CPU 利用率。请考虑在 AR 体验不需要时停用这些功能。这将为您的应用提供额外的 CPU 周期,并改善热性能和电池续航时间。

目前,如果为当前会话启用 Instant Placement 和/或 Augmented Images,ARCore CPU 利用率会增加。请遵循以下准则以提高 CPU 利用率:

  • 建立完整跟踪后,应停用 Instant Placement。您可以在会话配置中停用此功能。

  • 只要您的 AR 体验不需要使用 Augmented Images,系统就会停用该功能。要停用增强图像,请在会话配置中配置 null 或空的增强图像数据库。

监控设备热量

在开发和质量检查测试期间,您可以使用 Android 的热 API 来监控和跟踪应用在设备上的性能。

请务必使用应用的正式版,而不是可能具有不同运行时性能特征的开发版或质量检查版

识别 ARCore CPU 饥饿

当 ARCore 会话处于活动状态时,您的应用必须与 ARCore 共享有限的移动 CPU 和 GPU 资源。受 CPU 限制的应用可以与运动跟踪所需的 CPU 资源竞争。

如需验证 ARCore 的同时定位和映射 (SLAM) 能否正常运行,请验证 Android 设备日志中是否没有出现“VIO 频率低”消息

adb logcat | grep 'VIO frequency low'

避免 ARCore CPU 饥饿

当 ARCore 会话处于活动状态时,您的应用必须与 ARCore 共享有限的移动 CPU 和 GPU 资源设备。受 CPU 限制的应用可以与运动跟踪所需的 CPU 资源竞争。

预先创建增强图像数据库

如有可能,请在开发时预先创建增强图像数据库。如果需要在运行时创建增强图像数据库或动态向现有数据库添加图像,请务必在后台线程中添加图像,以免阻塞主界面线程。

限制请求的摄像头信息流数量

使用 Java 共享相机时,应用可以请求额外的 CPU 或 GPU 图像流。