如何在 A-Frame 中检测桌面、移动设备、GearVR、Oculus Rift 和 Vive?

How to detect Desktop vs. Mobile vs. GearVR vs. Oculus Rift vs. Vive in A-Frame?

在 A-Frame 中,我想检测用户是否连接了 VR 耳机并判断他们使用的是哪个设备。我该怎么做?

我们可以使用 A-Frame 中的几个实用函数来检测兼容性:https://aframe.io/docs/master/core/utils.html

手机相关的实用工具看navigator.userAgent。 VR 相关的实用程序检查从 headset/polyfill 返回的姿势数据是否不是 0,0,0.

鉴于当前 API:

  • 桌面:!AFRAME.utils.checkHeadsetConnected()
  • 手机:AFRAME.utils.isMobile()
  • GearVR:AFRAME.utils.isGearVR()
  • Oculus Rift:!AFRAME.utils.isMobile() && AFRAME.utils.checkHeadsetConnected()
  • HTC Vive:!AFRAME.utils.isMobile() && AFRAME.utils.checkHeadsetConnected()

要区分 Rift 与 Vive,请尝试使用 WebVR API 舞台参数 https://w3c.github.io/webvr/#interface-vrstageparameters