《PhoneGap 3.0移动应用开发实战详解》本书对PhoneGap的相关知识进行介绍,共4个部分,31章。主要内容包括:PhoneGap的基本概念和开发环境的建立;原生插件的使用;软件配置、GUI设计以及一些综合性的开发案例;PhoneGap运行原理、自定义插件开发和第三方插件的使用。本节为大家介绍获取设备手持方向——电子罗盘。
AD:
10.5 获取设备手持方向——电子罗盘
很多手机都带有电子罗盘传感器,也被称为电子指南针,就是根据地球的磁场来确定方向。
PhoneGap电子罗盘插件的完全限定名是org.apache.cordova.device-orientation,可以使用下面的命令安装插件。
- phonegap plugin add org.apache.cordova.device-orientation
一旦安装了插件,就可以使用该插件公开的API,它们都可以使用windows.navigator对象访问。
通过PhoneGap插件公开的Compass类可以获取罗盘传感器的数据,从而获知手机当前朝向,即设备的手持方向。
navigator.compass可以返回Compass类的一个实例,该类有以下三个方法:
compass.getCurrentHeading():获取当前的朝向。
compass.watchHeading:设置监控,以特定时间间隔获取朝向。
compass.clearWatch:清除监控设置。
语法格式如下:
这三个方法与重力感应器的三个方法使用完全一致,只是成功回调函数会返回一个compassHeading对象,该对象包含了朝向信息。
例如下面的代码,即演示了如何监控电子罗盘的朝向。
代码内容Chapter_10-06
时间间隔可以使用第三个参数compassOptions来设定。compassOptions是一个对象,该对象包含一个属性frequency,用于以毫秒为单位指定间隔时间。
compassOptions还可以包含一个属性filter,用于指定一个数字,只有变化超过这个数字才会触发回调函数。目前只有iPhone支持该属性。
1.失败回调函数
监控方法的失败回调函数有一个参数error。
Error中有一个名为code的属性,该属性值可以是如下常量之一,以分别表示出错的原因:
CompassError.COMPASS_INTERNAL_ERR常量:表示内部错误。
CompassError.COMPASS_NOT_SUPPORTED常量:表示不支持。
2.compassHeading对象
监控方法的成功回调函数会返回一个compassHeading对象。
- function onSuccess(compassHeading) {
- }
该对象包含一个特殊时间点捕获的朝向数据,它包含如下几个属性,如表10-2所示。
表10-2 compassHeading对象属性
在Android环境下,其不支持trueHeading,与magneticHeading返回相同的值。headingAccuracy属性将总是返回0,也就是说,magneticHeading和trueHeading之间没有什么差别。
iOS注意事项