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


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

 

目標平台設為Windows.Universal Targeting Windows.Universal


 

微軟過去幾年平台一直在變革,所以開發者往往會有不同的起點,所以下面會給出一些指南,來幫助不同起點的開發者順利的遷移代碼帶UWP平台上。

 

不同的起點 Starting Points

這幾年大家接觸的Windows平台會有很多,下面分別提供針對他們的指引。 

 

起點

AppX Manifest清單目標平台

如何遷移到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等等。

現在讓我們打開 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>

 

  • 保存清單文件

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

 

在模擬器上運行應用 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


 

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

 


免責聲明!

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



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