HoloLens開發手記 - 構建2D應用 Building 2D apps

HoloLens可讓咱們在真實世界中看到全息圖像內容。可是它本質上仍是一臺Windows 10設備,這意味着HoloLens能夠以2D應用形式運行Windows Store裏的大部分UWP應用。html

 

目標平臺設爲Windows.Universal Targeting Windows.Universal


 

微軟過去幾年平臺一直在變革,因此開發者每每會有不一樣的起點,因此下面會給出一些指南,來幫助不一樣起點的開發者順利的遷移代碼帶UWP平臺上。shell

 

不一樣的起點 Starting Points

這幾年你們接觸的Windows平臺會有不少,下面分別提供針對他們的指引。 編程

 

起點

AppX Manifest清單目標平臺windows

如何遷移到UWP?
Windows Phone (Silverlight) Silverlight App Manifest清單 Migrate to WinRT
Windows Phone 8.1 Universal 不包含目標平臺的8.1 AppX Manifest清單 Migrate your app to the Universal Windows Platform
Windows Store 8 不包含目標平臺的8 AppX Manifest清單 Migrate your app to the Universal Windows Platform
Windows Store 8.1 Universal 不包含目標平臺的8.1 AppX Manifest清單 Migrate your app to the Universal Windows Platform

 

修改目標平臺爲Windows.Universal Change your Target to Windows.Universal

按照指引文檔適配後,你的應用能夠運行與UWP平臺上啦,包括手機、PC、XBox和HoloLens等等。api

如今讓咱們打開 AppX的項目清單文件,確保你的UWP應用能夠在HoloLens上運行。架構

  • 打開你的VS項目,導航到清單文件
  • 右鍵Package.appxmanifest清單文件,選擇View Code

 

 

  • 確保在<Dependencies>節下的目標平臺是Windows.Universal

 

<Dependencies>
  <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.10240.0" MaxVersionTested="10.0.10586.0" />
</Dependencies>

 

  • 保存清單文件

你可使用任何文本編輯器來修改此清單文件,效果都同樣。app

 

在模擬器上運行應用 Run in the HoloLens Emulator

 

如今你能夠直接生成項目並在HoloLens模擬器上運行你的應用。異步

 

 

  • 選擇HoloLens模擬器做爲部署目標

 

 

  • 開始在模擬器上進行調試
  • 你可使用鍵盤鼠標來模擬HoloLens的操做,來測試你的應用

 

 

後續步驟 Next Steps

啓動應用時可能會出現如下兩種狀況:編輯器

  1. 應用在被放置好後顯示閃屏圖片後當即運行,這表示一切正常。
  2. 應用在被放置好後出現載入動畫,最後仍然只顯示閃屏圖片,這說明你的應用啓動時發生錯誤,須要解決。

 

如何調試 How to debug


 

HoloLens是新出現的Windows 10設備,因此許多UWP API在HoloLens上仍處於測試和開發階段。下面是一些咱們發現的問題:工具

  • 應用啓動時不支持文件系統查詢操做
  • 使用Web認證代理或Web客戶經理之外的傳統認證方式
  • 啓動時會較深刻的查詢硬件設備
  • 啓動時會使用日曆、聯繫人、協議等API
  • 使用一些大的第三方庫可能會致使不能經過HoloLens上的審覈

 爲搞明白是什麼緣由致使你的應用不能正常啓動,你須要進行調試。

 

經過調試器運行應用 Running your UWP app in the debugger

調試步驟很簡單,經過菜單Debug > Start Debugging便可。

  • 若是應用發生未處理異常會第一時間被調試器捕獲,VS裏會顯示相關的異常信息。若是你已經在應用裏使用try catch作了異常捕獲處理,那麼異常信息能夠被你的代碼獲取到,能夠像下圖那樣顯示出來。

 

 

  • 你也能夠經過打斷點單步調試來詳細定位到問題代碼塊,通常來說能夠解決大部分問題。

 

瞭解應用錯誤的緣由 Understanding the failure

正如上文提到的,HoloLens開發者版存在一些由測試和開發中的API致使的已知問題。若是你的應用使用了潛在問題API列表中的API,那麼能夠經過Windows Feedback工具反饋給微軟。

如何打開Windows Feedback工具

  1. 手勢喚出開始菜單
  2. 打開Windows Feedback應用
  3. 選擇Developer Platform,而後發送出錯細節給微軟

微軟會持續地修復UWP API的問題。可是對於一些由於設計時就不支持HoloLens的API,下面是一些可能有幫助的解決模式:

錯誤碼 Error codes

  •  不該該返回一個特殊的HRESULT錯誤,由於這個API目前還沒完善。 相反,API應經過使用空集合,布爾返回值,顯式狀態代碼等拋出錯誤信息。請注意,若是API已經因爲編程錯誤(例如傳遞無效參數)而返回HRESULT,則它將 繼續酌情返還這些錯誤。

集合 Collections

  • 當咱們使用屬性索引器或者方法的返回值是集合時,不該該簡單地直接返回一個null對象,而最好返回一個數量爲0的集合對象。
  • 在一些罕見的狀況下,API會暴露一個可讀/寫的集合類型屬性,容許應用程序提供本身的值。 在這些狀況下,若是API在徹底功能的狀況下已經返回null,它應該在部分功能的狀況下繼續返回null。 注意,這是一個API設計的反模式,大多數UWP API通常不該該遵循它。

異步方法 Asynchronous functions

  • 不該該從Async異步方法返回空IAsyncAction或IAsyncOperation結果。 相反,它們將返回已經處於任務完成狀態並具備適當結果(空集合,狀態代碼等)的有效對象。

事件 Events

  • 事件不該該失敗或者忽略事件註冊行爲。相反,API應該接受事件註冊/取消事件註冊,但毫不會引起事件。 API必須持有任何已註冊的事件處理程序(而不是默默地忽略它們),由於應用程序可能無心中依賴註冊的事件進行生命週期管理。

 

更新UI Update your UI


 

 如今你的應用在HoloLens中以2D面板的形式展現在世界中,咱們下面應該讓咱們的應用看起來更漂亮。下面使一些要考慮的內容:

  • HoloLens將以固定分辨率和DPI運行全部2D應用,至關於853x480有效像素。 考慮你的設計是否須要在這個比例下進行細化,並考慮查看咱們的2D UI指南,來提升用戶體驗。
  • HoloLens不支持2D動態磁貼。 若是您的核心功能顯示活動磁貼上的信息,請考慮將該信息移回應用程序。
  • HoloLens不支持共享合同,2D打印,全屏模式,投射和可能在您的應用程序中的其餘功能。

 

新的輸入可能性 New input possibilities


HoloLens使用先進的深度傳感器感知世界和用戶。 這使得高級手勢得以使用,如bloom和air-tap手勢。 強大的麥克風還確保了較好的語音體驗。 HoloLens負責處理UWP應用的全部複雜內容,將您的Gaze和手勢抽象並轉換爲常規UWP輸入機制的指針事件。 例如,HoloLens Clicker模擬Air-Tap手勢,但2D應用程序不須要知道輸入來自哪裏,它們只知道發生了指針點擊事件。
如下是將UWP應用遷移到HoloLens時應瞭解的關於輸入方式的高級概念/方案:

  • 當用戶注視應用時,Gaze會觸發鼠標懸停事件,可能意外地觸發菜單,彈出窗口或其餘用戶界面元素,
  • 凝視不如鼠標輸入那麼精確。 對HoloLens應該使用適當大小的點擊目標,相似於觸摸友好的移動應用的UI。 應用UI邊緣附近的小元素特別難以與之交互。
  • 用戶必須能夠在應用中切換輸入模式,從滾動到拖動到兩個手指平移手勢。 若是您的應用是爲觸摸輸入設計的,請考慮確保沒有主要功能只依賴手勢。 若是是,請考慮使用其餘輸入機制,例如能夠啓動手指平移手勢的按鈕。 例如,地圖應用程序可使用兩個手指平移進行縮放,但具備加號,減號和旋轉按鈕,以模擬與單次點擊相同的縮放交互。

語音輸入是HoloLens體驗的關鍵部分。 咱們已經啓用了在Windows 10中的全部語音API爲HoloLens上的Cortana提供支持。

 

發佈和維護你的UWP應用 Publish and Maintain your Universal app on HoloLens


 

一旦你的應用能夠正常運行,那麼你就能夠打包它並將它上傳到應用商店中

相關文章
相關標籤/搜索