WPF中使用传感器

在WPF 中使用传感器已知有两种方式可以实现:

  1. C++通过实现COM接口的方式拿到数据,再传到WPF中使用
  2. 直接使用WinRT的API(什么是WinRT?) 显然使用第二种方式简单很多,本文介绍第二种方式,如果对第一种方式感兴趣,请参考.aspx)。

整个过程可以分成三个步骤:

一、使用WinRT库

  要能够使用WinRT库,首先要下载Win8或者Win8.1的SDK(VS打开带有WinRT的程序会自动提示安装,也可以自己手动下载安装 ,手动下载安装未验证)

二、修改目标平台版本

  下载完SDK后发现依然无法找到传感器类库的dll,此时需要将程序的目标平台改为8.1或8,具体方法是:

打开项目的project文件,在节点下添加

< TargetPlatformVersion >8.1< /TargetPlatformVersion >

此时在添加引用就会发现有个叫Windows的dll可以添加,传感器的API就在这个dll里面啦。

三、获取传感器数据

  接下来开始使用API获取传感器数据。一编译,发现报错了,此时还需要一些运行时的库支持。添加引用System.Runtime 和 System.Runtime.InteropService. WindowsRuntime.dll. 它在系统的C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETCore\v4.5目录下,此时就可以编译通过了。

正在开心着,却发现代码中一片飘红,就像这样:

在console中可以看到错误的提示:

原因就是,这两个程序集中存在相同的命名空间以及相同的类,要解决此问题可以使用程序集别名的方式。

给引用程序集属性中可以看到设置别名:

我们给System.Runtime.dll程序集设置别名“RunTime”,此时若使用System.Runtime中的类则在当前文件的所有using之前加上:

extern alias RunTime;

在代码中就可以这么使用了:

RunTime::NameSpace1.Test test= new RunTime::NameSpace1.Test();

这样飘红问题就解决了。

接下来就可以愉快的获取你需要的传感器对象,订阅相关事件了,如下:

1
2
SimpleOrientationSensor _simpleOrientationSensor = SimpleOrientationSensor.GetDefault();
_simpleOrientationSensor.OrientationChanged += SimpleOrientationSensorOnOrientationChanged;

那么具体有哪些传感器?又怎么使用呢?
请参考这里

-------------本文结束 感谢您的阅读-------------

本文标题:WPF中使用传感器

文章作者:nero

发布时间:2015年11月02日 - 20:11

最后更新:2017年10月30日 - 08:10

原始链接:http://erdao123.oschina.io/nero/2015/11/02/WPF/WPF中使用传感器/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。