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

相關文章
相關標籤/搜索