HoloLens 2 应用程序使用 LaunchUriAsync 打开外部应用程序

问题描述 投票:0回答:2

我想在我的 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 中编译的方法。应用程序线程执行也在上述所有情况下进行了测试,只是为了更好地衡量 - 没有任何效果。 这个

论坛帖子

似乎指向一个不同的线程,应该用来做我想做的事情。这也被尝试过,产生了与上面在 UI 线程上相同的结果。

hololens windows-mixed-reality
2个回答
0
投票


0
投票

在第一个场景中,如果“新应用程序”也是沉浸式应用程序,那么需要注意的是,HoloLens 操作系统本身并不支持多个沉浸式应用程序的同时操作。当您启动新的沉浸式应用程序时,所有其他活动应用程序将立即变为非活动状态。这是设计使然。

在第二种场景中,如果“新应用”是 2D 视图应用,则可以继续与之前打开的沉浸式应用进行交互。我使用

Launcher.LaunchUri

方法进行了一些测试,证实了当您打开新的 2D 视图应用程序时,与之前的沉浸式应用程序的交互不会中断。

© www.soinside.com 2019 - 2024. All rights reserved.