You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测Mixed Reality应用当前运行的设备类型(HoloLens/沉浸式头显)

如何检测Mixed Reality应用当前运行的设备类型?

嘿,这个问题我太熟了!在开发跨设备的MR应用时,区分HoloLens 1、HoloLens 2和沉浸式VR头显是很常见的需求,下面给你两种实用的实现方案,看你项目需求选就行:

方案一:使用Mixed Reality Toolkit (MRTK)(推荐)

如果你用Unity开发MR应用,MRTK已经帮我们封装好了设备识别的逻辑,不用自己折腾底层API,兼容性还强。步骤很简单:

  1. 确保你的Unity项目已经导入并配置好MRTK(版本建议用2.x或以上)
  2. 在代码中通过MRTK的核心服务获取当前设备类型:
using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;

// 获取当前输入系统的设备类型
var currentDeviceType = CoreServices.InputSystem.DeviceType;

// 根据设备类型执行不同逻辑
switch (currentDeviceType)
{
    case DeviceType.HoloLens1:
        Debug.Log("当前运行在HoloLens 1上");
        // 这里写HoloLens 1专属逻辑
        break;
    case DeviceType.HoloLens2:
        Debug.Log("当前运行在HoloLens 2上");
        // 这里写HoloLens 2专属逻辑(比如眼动追踪、手部交互)
        break;
    case DeviceType.WindowsMixedReality:
        Debug.Log("当前运行在沉浸式VR头显上");
        // 这里写VR头显专属逻辑(比如手柄交互、空间定位)
        break;
    default:
        Debug.Log("未知设备类型");
        break;
}

这个方案的好处是:MRTK会自动处理不同设备的硬件特性差异,你只需要关注业务逻辑就行,不用自己做版本或硬件检测。

方案二:直接调用UWP原生API(适合非Unity或自定义场景)

如果你的项目没有用MRTK,或者是纯UWP应用,那就可以直接调用UWP的原生API来识别设备:

第一步:判断是否为全息设备(HoloLens系列)

先通过设备家族区分HoloLens和沉浸式VR:

using Windows.System.Profile;

// 检查设备家族:HoloLens系列的设备家族是"Windows.Holographic"
bool isHolographicDevice = AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Holographic";

第二步:区分HoloLens 1和HoloLens 2

HoloLens 2支持手部追踪、眼动追踪等特性,而HoloLens 1不支持,我们可以通过硬件能力来判断:

using Windows.Devices.Input;
using System.Linq;

if (isHolographicDevice)
{
    // 获取指针设备的能力
    var pointerDevice = PointerDevice.GetPointerDevices().FirstOrDefault();
    if (pointerDevice != null)
    {
        // HoloLens 2支持手部追踪,具备触觉反馈和指向能力
        bool supportsHandTracking = pointerDevice.Capabilities.HasFlag(PointerDeviceCapabilities.Haptics) && 
                                    pointerDevice.Capabilities.HasFlag(PointerDeviceCapabilities.Pointing);
        
        if (supportsHandTracking)
        {
            // 当前是HoloLens 2
        }
        else
        {
            // 当前是HoloLens 1
        }
    }

    // 另一种方式:通过系统版本判断
    // HoloLens 1的最高系统版本是10.0.17763,HoloLens 2从10.0.18362开始
    var osVersion = System.Environment.OSVersion.Version;
    if (osVersion.Major == 10 && osVersion.Build >= 18362)
    {
        // HoloLens 2
    }
    else
    {
        // HoloLens 1
    }
}
else
{
    // 当前是沉浸式VR头显(比如Windows Mixed Reality头戴设备)
}

注意事项

  • 用MRTK方案时,要确保项目配置了对应设备的MRTK配置文件,否则设备识别可能不准确
  • 原生API方案需要自己处理更多边界情况,比如部分第三方VR设备的识别
  • 测试时尽量用真实设备验证,模拟器可能存在识别偏差

内容的提问来源于stack exchange,提问作者LocalJoost

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:10:56