我想在我的 HoloLens 2 应用程序中构建功能,以在本地启动本机耳机应用程序。例如,我希望能够在网络浏览器中打开和操作 PDF、照片查看器中的照片或 3D 查看器中的 3D 模型,同时仍让我的应用程序在同一空间中运行。
目前,每当我在运行应用程序时尝试使用耳机的文件浏览器打开文件时,该文件都会在其本机外部应用程序中打开(例如浏览器中的 PDF、照片查看器中的图像等),但是当发生这种情况时,我的应用程序在后台冻结,它的 UI 被我的目光所吸引,而不是停留在世界空间中并可交互。当我关闭文件浏览器/网络浏览器/照片查看器时,行为恢复正常。我希望能够同时打开多个这样的窗口,同时仍然与我的应用程序正常交互。
Unity版本:2021.3.23f1 平台:通用Windows平台 MRTK:3.0 HoloLens 2 操作系统:Windows 全息操作系统
我做了一些研究,发现(https://learn.microsoft.com/en-us/uwp/api/windows.system.launcher.launchuriasync?view=winrt-22621)指出外部应用程序可以通过 LaunchUriAsync 调用,并且必须在 UI 线程上完成。大多数 HoloLens 应用程序的 Uri 可以在此处找到 (https://learn.microsoft.com/en-us/windows/uwp/launch-resume/launch-default-app)。我尝试了它,如附图所示,并使用多个 HoloLens 应用程序 Uri 进行了测试,我的调试显示它一直到线程内的等待调用,但从那里没有任何反应。 true 和 false 都作为 lambda 的第二个参数输入 - 两者都没有执行任何操作。 Microsoft 的文档指出了一组 Uri 选项,可以使用“此参考”进行设置,以在运行的内部和外部应用程序之间提供优先级,但 Unity 无法识别它使用的库 (Microsoft.System),无法找到让它在 UWP 中编译的方法。应用程序线程执行也在上述所有情况下进行了测试,只是为了更好地衡量 - 没有任何效果。 这个
论坛帖子