Как отличить настольный компьютер от мобильного устройства, GearVR, Oculus Rift и Vive в A-Frame?

В A-Frame я хочу определить, подключена ли у пользователя гарнитура VR, и сообщить, какое устройство он использует. Как я могу это сделать?

  • Рабочий стол (без дисплея VR)
  • Мобильные устройства (например, Google Cardboard с полифиллом webvr, iPhone, Android)
  • Samsung GearVR
  • Oculus Rift
  • HTC Vive

person ngokevin    schedule 16.08.2016    source источник


Ответы (1)


В A-Frame есть несколько служебных функций, которые мы можем использовать для определения совместимости: https://aframe.io/docs/master/core/utils.html.

Утилиты, связанные с мобильными устройствами, смотрите на navigator.userAgent. Утилиты, связанные с виртуальной реальностью, проверяют, не равны ли данные позы, возвращаемые гарнитурой / полифилом, 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

person ngokevin    schedule 16.08.2016
comment
Обратите внимание, что в 0.4.0 эти утилиты будут перемещены в AFRAME.utils.device - person ngokevin; 23.11.2016