I’m trying to determine if my app is running on Q1, Q2, and possibly Pico varieties. Assuming the XR Int. TK does not provide this information, would it be possible to use Android native functions to determine this?
Edit: Or perhaps this?: Unity - Scripting API: SystemInfo
It is currently not possible through Unity API calls to distinguish between Quest 1 and Quest 2. You can import the Oculus Integration asset into your project and use OVRPlugin.GetSystemHeadsetType
to determine which Oculus device you are running on.
If you just need to determine if you are running on an Oculus device, you can determine that through the Input System or by enumerating the active XR Input Subsystems. Both methods are somewhat involved, but we are looking to improve the API for determining this information.
If you have the Input System package enabled, you can query InputSystem.devices
which will contain the connected devices, and each will have a string layout
name. You can then use that layout name as an argument to InputSystem.LoadLayout
to get the InputControlLayout
. Then you can compare the InputControlLayout.type
with the Unity.XR.Oculus.Input.OculusHMD
type to determine if you are running with an Oculus HMD connected.
If you don’t have the Input System package enabled, you can enumerate the active XRInputSubsystem
using SubsystemManager.GetInstances
. From the returned instances, you can query the SubsystemDescriptor.id
and compare to “oculus input” and whether it is running
.