HoloLens使用Universal Windows Platform (UWP)提供的应用模型。UWP应用模型定义了应用如何被安全和完全地安装、更新、版本控制和移除。它管理了应用生命周期 - 应用如何被执行、休眠和中断 - 以及如何保留应用状态。它也覆盖了和操作系统、文件以及其他应用的集成和交互。
应用生命周期 App lifecycle
全息应用的生命周期涉及到了标准应用的概念,例如放置。启动、中断和移除。
放置就是启动 Placement is launch
每一个应用都通过放置应用磁贴在HoloLens shell中启动。这些应用磁铁,在放置的时候,就将开始运行应用。这些应用磁贴会持久化的停留在它们被放置的位置,任何时候你都可以从它们返回应用。
一旦完成放置(除非放置是由应用间启动唤起的),应用开始启动。HoloLens应用同一时刻可以运行一个应用。一旦你放置和启动了一个应用,任何其他激活的应用都会被挂起,在你放置它的地方,应用磁贴上会留下一个它最后状态的截图。阅读标准生命周期的文章来了解更多关于处理恢复和其他生命周期事件的方法。
移除是关闭/终止处理 Remove is close/terminate process
当你从世界中移除一个放置好的应用磁贴,这闭合了基础的流程。这对于确保你的应用被终止或者重启一个有问题的应用可能是有用的。
应用暂停/终止 App suspension/termination
使用HoloLens,用户能够为一个应用创建多个启动入口。它们通过从开始菜单启动你的应用,并将应用磁贴放置在世界中来做到这点。每一个应用磁贴都表现为不同的启动入口,在系统中都具有一个单独的磁贴实例。SecondaryTile.FindAllAsync() 查询的队列将可以列出所有应用的二级磁贴。
当一个UWP应用暂停时,应用当前状态的屏幕截图被获取。
与其他Windows 10平台的关键区别是通过CoreApplication.Resuming和CoreApplication.Activated事件,应用如何被通知它的一个实例被激活。
情况 | 恢复 | 激活 |
从开始菜单启动一个应用新实例 | 使用一个新的TileId激活应用 | |
从开始菜单启动第二个应用实例 | 使用一个新的TileId激活应用 | |
选中当前未激活的应用实例 | 使用实例关联的TileId激活应用 | |
选中一个不同的应用,然后选中先前激活的实例 | 恢复被触发 | |
选中一个不同的应用,然后选中先前未激活的实例 | 恢复被触发 | 然后使用实例关联的TileId激活应用 |
扩展的执行 Extended execution
有时你的应用需要继续在后台做一些工作或者播放声音。Background tasks 在Windows Holographic里是可以使用的,但是有一些限制。
应用视图 App views
当你的应用激活时,你可以选择显示哪种类型的视图。对一个应用CoreApplication来说,总存在一个初始的应用视图(app view)和任意数量的其他你想创建的次级视图。对于桌面环境,你可以认为一个应用视图就是一个窗口。我们的全息应用项目模板将会创建一个初始视图是全息视图的Unity项目。你的应用可以使用像Xaml这样的技术来创建额外的2D视图来使用应用内购买之类的shell控件。如果你的应用以通用应用形式启动,那么初始视图会是2D的,但是你可以通过添加一个额外的全息视图来提升在HoloLens的体验。想象一下,我们用XAML构建了一个图片查看器,里面有个视图切换按钮,可以一键切换到全息视图,在全息视图中,来自应用的照片飞到世界和物体表面上。
创建一个全息视图 Create a Holographic view
全息视图是指那些通过HolographicSpace 类型创建了全息视图的应用。
混合世界中的2D视图 2D view in the Mixed World
任何非全息视图的在你的世界中都会被渲染成2D视图.
次级视图磁贴的放置 Placement of further App Tiles
使用二级磁贴(Secondary Tile) API你可以放置任意数量你想要的2D视图。这些被放置的磁贴将会以闪屏的形式出现,用以来之后启动你的应用。Windows Holographic当前不支持渲染任何2D磁贴作为动态磁贴。在二级磁贴API(Secondary tile APIs)页面你可以了解到更多信息。
切换视图 Switching views
从2D视图切换到全息视图 Switching from the 2D XAML view to the holographic view
如果用户使用了XAML,然后XAML IFrameworkViewSource将会控制应用的首个视图。应用需要在激活CoreWindow之前切换到全息视图,以保证应用直接进入全息体验。
使用CoreApplication::CreateNewView 和 ApplicationViewSwitcher::SwitchAsync 来实现视图的切换。
注意:
- 当从XAML视图切换到全息视图或将被从世界中移除的应用面板时,不要为SwitchAsync方法指定Consolidate标记
- SwitchAsync方法应该被你想要切换去的视图关联的Dispatcher所调用
- 如果你需要启动一个虚拟键盘或想要激活其他应用,你需要使用SwitchAsync方法回到XAML视图
从全息视图切换回键盘XAML视图 Switching from the holographic view back to a keyboard XAML view
在视图间反复切换通常是为了在全息应用显示一个键盘。如果你的应用显示了一个2D视图,shell只能够显示系统键盘。如果你的应用需要获取文本输入源,然后他们会写一个带有文本输入框的自定义XAML视图,它能在切换到它后,输入完成后再切换回去。
上述所说情形,可以使用ApplicationViewSwitcher::SwitchAsync 从你的全息视图切换回XAML视图。
应用大小 App size
2D应用视图总是出现在一个固定的可视面板中。这使得所有2D视图显示同等数量的内容。下面是关于2D应用视图大小的进一步细节:
- 调整大小时,应用的宽高比始终一样
- 调整大小时,应用的分辨率和拉伸率都不会改变
- 应用不能查询他们在世界中实际的大小
应用磁贴 App tiles
开始菜单使用了标准小号和中号磁贴用于pin视图和所有应用视图。
应用间交互 App to app interactions
当你构建应用时,Windows 10上你可以获得丰富的应用间通信机制。即使HoloLens目前不支持最新的应用协议启动(app service protocol launches),但是许多新的协议API和文件注册机制在HoloLens上能够确保应用间启动和通信。
协议 Protocols
HoloLens通过Windows.System.Launcher APIs 支持应用间启动。
当启动其他应用时,以下内容要被考虑:
- 当非模态启动时,例如LaunchUriAsync,用户在与应用交互前必须放置好它
- 当模态启动时,例如LaunchUriForResultsAsync,模态应用会被放置在窗口顶部
- HoloLens不能在独占视图(这里应该是指全息视图?)顶部覆盖上其他应用。为了显示启动的应用,HoloLens会使用会回到世界中以显示此应用。
文件选取器 File pickers
HoloLens支持FileOpenPicker 和 FileSavePicker 合约。尽管没有支持文件选取合约的应用被预装,但是你可以从Windows Store下载它们 - 例如OneDrive。
如果你安装了多个文件选取应用,你将不会看到任何有歧义的UI,这些UI通常是用来选取启动哪个应用。取而代之的是,首个安装的文件选取器将会被选中。保存文件时,会自动生成包括时间戳的文件名。用户不能改变文件爱你们。
默认情况下,以下是本地支持的文件拓展格式:
应用合约和Windows Holographic扩展 App contracts and Windows Hologrphic extensions
应用合约和拓展入口允许你注册你的应用来使用更底层的操作系统特性,例如处理文件拓展或者使用后台任务。下面是Windows Holographic支持的合约和拓展入口列表。这与它支持的API集合不同。
应用文件存储 App File Storage
所有的存储都是通过Windows.Storage命名空间实现。阅读下面的内容来了解更多细节。HoloLens不支持应用存储同步/漫游。
- 文件、文件夹和库 Files, folders, and libraries
- 商店和检索设置以及其他应用数据 Store and retrieve settings and other app data
已知目录 Known folders
查看KnownFolders 来了解更多UWP应用使用KnownFolders的细节。
Property 属性 |
Supported on HoloLens Development Edition HoloLens开发板是否支持 |
Description 描述 |
---|---|---|
AppCaptures | Yes |
Gets the App Captures folder. 获取应用捕获文件夹 |
CameraRoll | Yes |
Gets the Camera Roll folder. 相机文件夹 |
DocumentsLibrary | Yes |
Gets the Documents library. The Documents library is not intended for general use. 文档库 |
MusicLibrary | Yes |
Gets the Music library. 音乐库 |
Objects3D | Yes |
Gets the Objects 3D folder. 3D对象文件夹 |
PicturesLibrary | Yes |
Gets the Pictures library. 图片库 |
Playlists | Yes |
Gets the play lists folder. 播放列表文件夹 |
SavedPictures | Yes |
Gets the Saved Pictures folder. 保存的图片文件夹 |
VideosLibrary | Yes |
Gets the Videos library. 视频库 |
HomeGroup | No |
Gets the HomeGroup folder. 家庭组文件夹 |
MediaServerDevices | No |
Gets the folder of media server (Digital Living Network Alliance (DLNA)) devices. 媒体设备文件夹 |
RecordedCalls | No |
Gets the recorded calls folder. 电话录音文件夹 |
RemovableDevices | No |
Gets the removable devices folder. 可移动设备文件夹 |
应用打包 App package
使用Windows10,你不再需要以操作系统为目标但是取而代之的是,你需要以一个或多个设备家族来作为目标(target your app to one or more device families)。一个设备家族定义了此家族中所有设备都可应用的API、系统字符集和行为集合。它也决定了你的应用从应用商店中能安装到哪系列的设备。
翻译自:https://developer.microsoft.com/en-us/windows/holographic/app_model#App_views
HoloLens开发手记 - 应用程序模型 App model的更多相关文章
-
HoloLens开发手记 - HoloLens真机上手简评
千呼万唤始出来,终于今天拿到了HoloLens真机. 使用体验 使用自带的应用录制了一段使用视频,如下 设备概览 包装盒 本体 试戴 实际效果 GalaxyExplorer试玩 全息图像贴到现实场景表 ...
-
HoloLens开发手记 - 使用HoloLens模拟器 Using HoloLens emulator
首先下载HoloLens模拟器 HoloLens模拟器运行在没有真机的情况下在你的PC上测试应用,属于HoloLens开发工具系列.模拟器使用了Hyper-V虚拟机.通常通过传感器获取的人体和环境输入 ...
-
HoloLens开发手记-开发概述Development overview
开发HoloLens全息应用将使用UWP平台(Universal Windows Platform),所有的HoloLens应用都是Win10通用应用,所有UWP通用应用都可以在HoloLens上运行 ...
-
HoloLens开发手记 - HoloLens上的应用视图 App views on HoloLens
运行在HoloLens上的应用可能包含2种视图,分别是全息视图和2D视图.应用可以在全息视图和2D视图之间转换,这常被用于访问系统提供的接口,例如虚拟键盘.拥有至少一个全息视图的应用被归类为全息应用. ...
-
HoloLens开发手记 - 构建2D应用 Building 2D apps
HoloLens可以让我们在真实世界中看到全息图像内容.但是它本质上还是一台Windows 10设备,这意味着HoloLens可以以2D应用形式运行Windows Store里的大部分UWP应用. 目 ...
-
HoloLens开发手记 - Vuforia开发概述 Vuforia development overview
关于Vuforia,开发AR应用的人基本都会熟悉.之前我也写过一篇关于Vuforia开发的博客:Vuforia AR SDK入门 今天这篇博客则主要是谈谈HoloLens使用Vuforia开发混合现实 ...
-
HoloLens开发手记-实现3D应用启动器
一直有人问我,第三方应用在HoloLens上可以实现3D启动图标吗?就像微软官方出的应用那样.在不久之前,这个问题的答案还是No. 但是随着最新的Windows build 1803版本的发布,现在我 ...
-
HoloLens开发手记 - 使用Windows设备控制台 Using Windows Device Portal
Windows设备控制台允许你通过Wi-Fi或USB来远程控制你的HoloLens设备.设备控制台是HoloLens上的一个Web Server,你可以通过PC的浏览器来连接到它.设备控制台包含了很多 ...
-
HoloLens开发手记 - 使用Visual Studio Using Visual Studio
不论你是否使用DirectX或Unity来开发全息应用,你都会使用Visual Studio 2015来进行调试和部署应用.在本部分,你将会学习以下内容: 如何通过Visual Studio将你的应用 ...
随机推荐
-
python address already in use
1)找到使用端口的进程pid netstat -lp 2)kill掉pid kill -9 1234
-
不带www的域名跳转至www域名
由于我网站是架设在Linux的VPS上的,所以我用例如下方法 .htaccess文件 首先要开启Apache服务器的.htaccess功能,我在Apache安全配置中有分享过:开启之后新建一个.hta ...
-
解决setInterval计时器不准的问题
在js中如果打算使用setInterval进行倒数,计时等功能,往往是不准确的,因为setInterval的回调函数并不是到时后立即执行,而是等系统计算资源空闲下来后才会执行.而下一次触发时间则是在s ...
-
(2015年郑州轻工业学院ACM校赛题) A 彩票
这是个简单的题目,其实就是判断是否是偶数, 对二进行特判一下就行了! 比赛时候我们还错两次................ 一看简单题就想抢一血,谁知到第一次提交CE, 再提交WA 汗........ ...
-
poj 1860 Currency Exchange (SPFA、正权回路 bellman-ford)
链接:poj 1860 题意:给定n中货币.以及它们之间的税率.A货币转化为B货币的公式为 B=(V-Cab)*Rab,当中V为A的货币量, 求货币S通过若干此转换,再转换为原本的货币时是否会添加 分 ...
-
Java经典编程题50道之十三
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? public class Example13 { public static void main(St ...
-
Java中的a++和++a的区别
1.a++和++a的区别 a++表示先将a放在表达式中运算,然后再加1: ++a表示先将a加1,然后再放在表达式中运算 2.实例 (1)Java代码 /** * @Title:JiaJia.java ...
-
BZOJ_4269_再见Xor_线性基
BZOJ_4269_再见Xor_线性基 Description 给定N个数,你可以在这些数中任意选一些数出来,每个数可以选任意多次,试求出你能选出的数的异或和的最大值和严格次大值. Input 第一行 ...
-
Docker 导出&;加载镜像
文章首发自个人网站:https://www.exception.site/docker/docker-save-load-image 本文中,您将学习 Docker 如何导出&加载镜像.当我们 ...
-
SSM项目思路整合NEW2
上接于 https://www.cnblogs.com/shijinglu2018/p/10374541.html ...... 三)客户管理模块开发 说明:其实大致思路差不太多,都是首先根据前端页面 ...