Ориентация устройства и Cordova

У меня проблема с ориентацией устройства, Ionic и Cordova/ngCordova. Я уже выполнил команду: «плагин Cordova add 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 Run Android я получил эту ошибку. Невозможно прочитать свойство getCurrentHeading неопределенного.

Я тестировал этот код в браузере Genymotion или Samsung Galaxy Tab 4, но всегда получал одну и ту же ошибку.

Что я делаю не так?


person user3449953    schedule 09.07.2015    source источник
comment
Плагины Cordova должны использоваться на реальном устройстве. Также эти плагины следует использовать для функции DeviceReady Cordova.   -  person Karan Kumar    schedule 09.07.2015


Ответы (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

person MarioAleo    schedule 03.11.2015

Ваше устройство может не иметь компаса.

person Kuei-Hsi Ku    schedule 25.09.2015