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


 

一旦你的应用能够正常运行,那么你就能够打包它并将它上传到应用商店中

相关文章
相关标签/搜索