设备方向和Cordova

时间:2015-07-09 02:13:32

标签: angularjs cordova ionic device-orientation ngcordova

我遇到Device Orientation,Ionic和Cordova / ngCordova的问题 我已经运行了命令: " cordova插件添加cordova-plugin-device-orientation" 安装设备方向插件 安装没有问题。

然后我将以下代码添加到我的应用程序中:

    .controller('MyCtrl', function ($scope,$cordovaDeviceOrientation) {
$cordovaDeviceOrientation.getCurrentHeading().then(function(result) {
       var magneticHeading = result.magneticHeading;
       var trueHeading = result.trueHeading;
       var accuracy = result.headingAccuracy;
       var timeStamp = result.timestamp;

$scope.values=magneticHeading+" "+trueHeading+" "+accuracy+" "+timeStamp;
    }, function(err) {
      // An error occurred
    });
    })

执行cordova运行android后我得到了这个错误。 无法读取属性' getCurrentHeading'未定义的

我在浏览器,Genymotion或三星Galaxy Tab 4上测试了这段代码,但总是遇到同样的错误。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

您需要了解的两件事情:
第一:这种插件,如设备方向,一旦使用加速计硬件工作,就需要在真实设备中进行测试。
第二:您需要使用DeviceReady EventListner来使用插件,因此,您需要执行以下操作:

document.addEventListener("deviceready", function () {
  $cordovaDeviceOrientation.getCurrentHeading().then(function(result) {
    var magneticHeading = result.magneticHeading;
    var trueHeading = result.trueHeading;
    var accuracy = result.headingAccuracy;
    var timeStamp = result.timestamp;

    $scope.values=magneticHeading+" "+trueHeading+" "+accuracy+" "+timeStamp;
    }, function(err) {
      // An error occurred
  });
}, false);

如果你愿意,这里有angularjs + cordova + angular-material的种子: https://github.com/marioaleogolsat/cordova-angular-angularMaterial-seed

答案 1 :(得分:0)

您的设备可能没有指南针。