HoloLens開發手記 - 應用程序模型 App model


HoloLens使用Universal Windows Platform (UWP)提供的應用模型。UWP應用模型定義了應用如何被安全和完全地安裝、更新、版本控制和移除。它管理了應用生命周期 - 應用如何被執行、休眠和中斷 - 以及如何保留應用狀態。它也覆蓋了和操作系統、文件以及其他應用的集成和交互。

 

2D apps arranged in holographic shell in a breakfast area

 

應用生命周期 App lifecycle


 

 

全息應用的生命周期涉及到了標准應用的概念,例如放置。啟動、中斷和移除。

 

放置就是啟動 Placement is launch

 

每一個應用都通過放置應用磁貼在HoloLens shell中啟動。這些應用磁鐵,在放置的時候,就將開始運行應用。這些應用磁貼會持久化的停留在它們被放置的位置,任何時候你都可以從它們返回應用。

 

Placement puts a secondary tile in the world

 

一旦完成放置(除非放置是由應用間啟動喚起的),應用開始啟動。HoloLens應用同一時刻可以運行一個應用。一旦你放置和啟動了一個應用,任何其他激活的應用都會被掛起,在你放置它的地方,應用磁貼上會留下一個它最后狀態的截圖。閱讀標准生命周期的文章來了解更多關於處理恢復和其他生命周期事件的方法。

 

After placing a tile, the app starts running

 

移除是關閉/終止處理 Remove is close/terminate process

 

當你從世界中移除一個放置好的應用磁貼,這閉合了基礎的流程。這對於確保你的應用被終止或者重啟一個有問題的應用可能是有用的。

 

應用暫停/終止 App suspension/termination

 

使用HoloLens,用戶能夠為一個應用創建多個啟動入口。它們通過從開始菜單啟動你的應用,並將應用磁貼放置在世界中來做到這點。每一個應用磁貼都表現為不同的啟動入口,在系統中都具有一個單獨的磁貼實例。SecondaryTile.FindAllAsync() 查詢的隊列將可以列出所有應用的二級磁貼。

當一個UWP應用暫停時,應用當前狀態的屏幕截圖被獲取。

 

Screenshots are shown for suspended apps

 

與其他Windows 10平台的關鍵區別是通過CoreApplication.Resuming和CoreApplication.Activated事件,應用如何被通知它的一個實例被激活。

 

情況                                           恢復 激活
從開始菜單啟動一個應用新實例   使用一個新的TileId激活應用
從開始菜單啟動第二個應用實例   使用一個新的TileId激活應用
選中當前未激活的應用實例   使用實例關聯的TileId激活應用
選中一個不同的應用,然后選中先前激活的實例 恢復被觸發  
選中一個不同的應用,然后選中先前未激活的實例 恢復被觸發 然后使用實例關聯的TileId激活應用

 

 擴展的執行 Extended execution

 

有時你的應用需要繼續在后台做一些工作或者播放聲音。Background tasks 在Windows Holographic里是可以使用的,但是有一些限制

 

 Apps can run in the background

 

應用視圖 App views


 

當你的應用激活時,你可以選擇顯示哪種類型的視圖。對一個應用CoreApplication來說,總存在一個初始的應用視圖(app view)和任意數量的其他你想創建的次級視圖。對於桌面環境,你可以認為一個應用視圖就是一個窗口。我們的全息應用項目模板將會創建一個初始視圖是全息視圖的Unity項目。你的應用可以使用像Xaml這樣的技術來創建額外的2D視圖來使用應用內購買之類的shell控件。如果你的應用以通用應用形式啟動,那么初始視圖會是2D的,但是你可以通過添加一個額外的全息視圖來提升在HoloLens的體驗。想象一下,我們用XAML構建了一個圖片查看器,里面有個視圖切換按鈕,可以一鍵切換到全息視圖,在全息視圖中,來自應用的照片飛到世界和物體表面上。

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM