HoloLens开发手记 - 应用程序模型 App model

HoloLens使用Universal Windows Platform (UWP)提供的应用模型。UWP应用模型定义了应用如何被安全和彻底地安装、更新、版本控制和移除。它管理了应用生命周期 - 应用如何被执行、休眠和中断 - 以及如何保留应用状态。它也覆盖了和操做系统、文件以及其余应用的集成和交互。git

 

2D apps arranged in holographic shell in a breakfast area

 

应用生命周期 App lifecycle


 

 

全息应用的生命周期涉及到了标准应用的概念,例如放置。启动、中断和移除。web

 

放置就是启动 Placement is launch

 

每个应用都经过放置应用磁贴在HoloLens shell中启动。这些应用磁铁,在放置的时候,就将开始运行应用。这些应用磁贴会持久化的停留在它们被放置的位置,任什么时候候你均可以从它们返回应用。shell

 

Placement puts a secondary tile in the world

 

一旦完成放置(除非放置是由应用间启动唤起的),应用开始启动。HoloLens应用同一时刻能够运行一个应用。一旦你放置和启动了一个应用,任何其余激活的应用都会被挂起,在你放置它的地方,应用磁贴上会留下一个它最后状态的截图。阅读标准生命周期的文章来了解更多关于处理恢复和其余生命周期事件的方法。windows

 

After placing a tile, the app starts running

 

移除是关闭/终止处理 Remove is close/terminate process

 

当你从世界中移除一个放置好的应用磁贴,这闭合了基础的流程。这对于确保你的应用被终止或者重启一个有问题的应用多是有用的。api

 

应用暂停/终止 App suspension/termination

 

使用HoloLens,用户可以为一个应用建立多个启动入口。它们经过从开始菜单启动你的应用,并将应用磁贴放置在世界中来作到这点。每个应用磁贴都表现为不一样的启动入口,在系统中都具备一个单独的磁贴实例。SecondaryTile.FindAllAsync() 查询的队列将能够列出全部应用的二级磁贴。安全

当一个UWP应用暂停时,应用当前状态的屏幕截图被获取。app

 

Screenshots are shown for suspended apps

 

与其余Windows 10平台的关键区别是经过CoreApplication.Resuming和CoreApplication.Activated事件,应用如何被通知它的一个实例被激活。async

 

状况                                           恢复 激活
从开始菜单启动一个应用新实例   使用一个新的TileId激活应用
从开始菜单启动第二个应用实例   使用一个新的TileId激活应用
选中当前未激活的应用实例   使用实例关联的TileId激活应用
选中一个不一样的应用,而后选中先前激活的实例 恢复被触发  
选中一个不一样的应用,而后选中先前未激活的实例 恢复被触发 而后使用实例关联的TileId激活应用

 

 扩展的执行 Extended execution

 

有时你的应用须要继续在后台作一些工做或者播放声音。Background tasks 在Windows Holographic里是可使用的,可是有一些限制ide

 

 Apps can run in the background

 

应用视图 App views


 

当你的应用激活时,你能够选择显示哪一种类型的视图。对一个应用CoreApplication来讲,总存在一个初始的应用视图(app view)和任意数量的其余你想建立的次级视图。对于桌面环境,你能够认为一个应用视图就是一个窗口。咱们的全息应用项目模板将会建立一个初始视图是全息视图的Unity项目。你的应用可使用像Xaml这样的技术来建立额外的2D视图来使用应用内购买之类的shell控件。若是你的应用以通用应用形式启动,那么初始视图会是2D的,可是你能够经过添加一个额外的全息视图来提高在HoloLens的体验。想象一下,咱们用XAML构建了一个图片查看器,里面有个视图切换按钮,能够一键切换到全息视图,在全息视图中,来自应用的照片飞到世界和物体表面上。ui

 

The running app can have a 2D view or a holographic view

 

建立一个全息视图 Create a Holographic view

 

全息视图是指那些经过HolographicSpace 类型建立了全息视图的应用。

 

Apps running in holographic view are the only one visible

 

混合世界中的2D视图 2D view in the Mixed World

 

任何非全息视图的在你的世界中都会被渲染成2D视图.

 

Apps running in 2D view share the space in the mixed world with other apps

 

次级视图磁贴的放置 Placement of further App Tiles

 

使用二级磁贴(Secondary Tile) API你能够放置任意数量你想要的2D视图。这些被放置的磁贴将会以闪屏的形式出现,用以来以后启动你的应用。Windows Holographic当前不支持渲染任何2D磁贴做为动态磁贴。在二级磁贴API(Secondary tile APIs)页面你能够了解到更多信息。

 

Apps can have multiple placements using secondary tiles

 

切换视图 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视图

Apps can switch between 2D views and holographic views

When an app goes into a holographic view, the mixed world and other apps disappear

 

从全息视图切换回键盘XAML视图 Switching from the holographic view back to a keyboard XAML view

 

在视图间反复切换一般是为了在全息应用显示一个键盘。若是你的应用显示了一个2D视图,shell只可以显示系统键盘。若是你的应用须要获取文本输入源,而后他们会写一个带有文本输入框的自定义XAML视图,它能在切换到它后,输入完成后再切换回去。

上述所说情形,可使用ApplicationViewSwitcher::SwitchAsync 从你的全息视图切换回XAML视图。

 

应用大小 App size


 

 

2D应用视图老是出如今一个固定的可视面板中。这使得全部2D视图显示同等数量的内容。下面是关于2D应用视图大小的进一步细节:

  • 调整大小时,应用的宽高比始终同样
  • 调整大小时,应用的分辨率和拉伸率都不会改变
  • 应用不能查询他们在世界中实际的大小

 

2D apps appear with fixed window sizes

 

应用磁贴 App tiles


 

 

开始菜单使用了标准小号和中号磁贴用于pin视图和全部应用视图。

The start menu for Windows Holographic

 

应用间交互 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集合不一样。

 

Contract or Extension

合约或拓展

Supported?

是否支持

Account Picture Provider (extension) Unsupported
Alarm Unsupported
App service

Supported but not fully functional in the current version of Windows Holographic

支持,可是当前版本不是全部功能均可用

Appointments provider Unsupported
AutoPlay (extension) Unsupported
Background tasks (extension)

Partially Supported (not all triggers work on Windows Holographic)

部分支持,目前版本不是全部触发器均可用

Update task (extension) Supported
Cached file updater contract Supported
Camera settings (extension) Unsupported
Dial protocol Unsupported
File activation (extension) Supported
File Open Picker contract Supported
File Save Picker contract Supported
Lock screen call Unsupported
Media playback Unsupported
Play To contract Unsupported
Preinstalled config task Unsupported
Print 3D Workflow Supported
Print task settings (extension) Unsupported
URI activation (extension) Supported
Restricted launch Unsupported
Search contract Unsupported
Settings contract Unsupported
Share contract Unsupported
SSL/certificates (extension) Supported
Web account provider Supported

 

应用文件存储 App File Storage


 

全部的存储都是经过Windows.Storage命名空间实现。阅读下面的内容来了解更多细节。HoloLens不支持应用存储同步/漫游。

 

已知目录 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

相关文章
相关标签/搜索