设为首页收藏本站

微软Hololens全息现实网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

一键登录:

查看: 1566|回复: 0

Hololens开发初探踩的那些坑

[复制链接]
发表于 2017-6-20 11:12:06 | 显示全部楼层 |阅读模式

本帖最后由 HoloLens全息现实网 于 2017-6-20 11:15 编辑   微软官方对HoloLens的开发提供了两种常用方法,使用VS2015和Unity HoloLens专用版本。其中VS方式可以利用通用Windows模版Holographic DX11 App生成框架代码,Unity方式可以导入HoloToolkit这个官方推荐的工具集加速开发。HoloLens运行在...

本帖最后由 HoloLens全息现实网 于 2017-6-20 11:15 编辑

  微软官方对HoloLens的开发提供了两种常用方法,使用VS2015和Unity HoloLens专用版本。其中VS方式可以利用通用Windows模版Holographic DX11 App生成框架代码,Unity方式可以导入HoloToolkit这个官方推荐的工具集加速开发。

HoloLens运行在Win10系统,其应用程序为UWP App,这种App的权限受到比较大的限制,使用API时务必在Package.appxmanifest或unity设置里申请对应权限。此外,由于HoloLens生态还未成熟,微软目前对其做出了更多的限制,这些限制通常是由于设备特殊性或功能暂未集成造成,有些限制会在未来的版本解除。当前限制可参考:


  2.App model

此外,以下记录实际操作中遇到的一些细节问题,供大家参考。特别注意,曾亲历过同样的API在旧版系统抛异常,但更新系统后可用的情况。因此在不同版本环境下可能出现不同结果,记录问题时使用的环境如下:




开发环境:Win10 X64 10586版本, VS 2015 update3, Unity 5.4.0b24-HTP
HoloLens:10.0.14342.1018版本



一、文件系统
  a.KnownFolder路径获取方式的异同

  UWP程序的文件操作使用Windows.Storage命名空间的API,其中最常用的一个类为KnownFolders。这个类包括常用目录的属性和获取目录的方法,例如相机胶卷目录这个常用目录,可以使用两种方式获取,返回类型都为StorageFolder。

  • 使用属性KnownFolders.CameraRoll
  • 使用方法KnownFolders.GetFolderForUserAsync(null, KnownFolderId.CameraRoll); 第一个参数为User,通过微软在Github的Sample Code可知指定null代表当前用户。

当前MSDN文档并未说明二者的区别,实际使用时会发现返回值中的路径域有所不同:

  方法1为C:\Data\Users\DefaultAccount\Pictures\Camera Roll
  方法2为C:\Data\Users\DefaultAccount\AppData\Roaming\Microsoft\Windows\Libraries\ CameraRoll.library-ms

  注意:

如使用Windows.Storage的文件类StorageFile来操作枚举目录中的文件,则两者没有区别,文件的路径并不受目录路径影响,都会得到形如方法1的路径。如(xxxFolder设为前步返回值):

  IReadOnlyList<StorageFile> fileList = await xxxFolder.GetFilesAsync();
  foreach (StorageFile file in fileList) { /* file.path is the same */ }
  

但是,如果需要使用目录路径来拼路径,则需注意!例如Unity的WWW需要路径参数,这里的目录路径需使用方法1的返回路径,使用b会导致无效参数的错误。


  b.暂不能操作的常见目录
  结果:读取即可导致抛异常。
  KnownFolderId.HomeGroup
  KnownFolderId.MediaServerDevices
  KnownFolderId.RemovableDevices

  c.拷贝API的异常
  结果:目标目录已含被拷贝文件,会导致异常。
  如拷贝xFile到xFolder:
  xFile.CopyAsync(xFolder) // Exeption if xFolder already has xFile
  如需强行拷贝需使用如下方法:
  xFile.CopyAsync(xFolder, xName, NameCollisionOption.ReplaceExisting);
  但有个例外,即xFile就在xFolder目录时,上述API仍然会异常。

  d.DP权限问题

  使用DevicePortal从电脑传入HoloLens的文件,权限设置存在问题,普通App无权访问。访问即抛System.UnauthorizedAccessException。
  如:向相机目录传入一张合格照片,Hololens的内置Photo应用是看不到此照片的。


二、权限问题
  a.位置权限

调用GPS相关API,程序的manifest指定了Location权限,在首次运行时仍然需要一次确认,Hololens App可以调用Launcher.LaunchUriAsync(new Uri("ms-settings:privacy-location"))把系统设置的隐私页弹出,让用户选择允许。操作之后,在模拟器下才可以得到准确的经纬度信息。


  b.用户账户信息权限

虽然此功能并未列在Hololens官方的限制列表,实测时发现用户账户信息枚举不到,但同样代码在普通Win10设备可以成功获取。这一点也作为试出的当前差异,列此备忘。


论坛(HoloLens全息现实网): http://hololens8.cn

VR/AR/HoloLens开发者QQ群:220104582
VR/AR资源分享QQ群:281921834
HoloLens/VR/AR交流QQ群:433190386

转自:http://www.cnblogs.com/holohunter/p/5840380.html






上一篇:Hololens文件操作之坑:创建、读取、删除本地文件
下一篇:HoloLens研究之始:开发环境搭建
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

注册验证邮件查收提醒:

由于各大邮箱政策原因,

如果没收到邮件提醒,

您的注册验证邮件可能

被投送到您邮箱的垃圾箱,

请注意查收验证哦


QQ|小黑屋|Hololens全息现实网 ( 京ICP备15026232号   点击这里给我发消息

GMT+8, 2018-4-24 22:13 , Processed in 0.482294 second(s), 28 queries .

Powered by Hololens全息现实网 X3.2

© 2001-2017 Hololens全息现实网

快速回复 返回顶部 返回列表