2014-01-04 9 views
1

Я пытаюсь получить доступ к навигатору.accelerometer в моем приложении Cordova [3.3.1-0.1.2] и навигаторе.аселерометр не определен при работе в Android [4.0.3] эмулятор.Не удается получить доступ к акселерометру в приложении «Кордова» Android

Я после этого учебника при настройке приложения Кордова: http://www.techariv.in/2013/08/creating-android-hello-cordova.html

Я добавил следующее в WWW/config.xml внутри <widget>:

<plugin name="Accelerometer" value="org.apache.cordova.AccelListener" /> 

Я также попытался

<plugin name="Accelerometer" value="CDVAccelerometer" /> 

Кроме того, у меня есть следующее в www/js/index.js (которое загружает выполнение):

onDeviceReady: function() { 
    app.receivedEvent('deviceready'); 

    alert(navigator.accelerometer); 
    navigator.accelerometer.getCurrentAcceleration(function() { 
     alert('success'); 
    }, function() { 
     alert('fail'); 
    }); 
}, 

Когда приложение запускается, я получаю одно предупреждение, которое просто говорит «undefined». Вызывается обратный вызов getCurrentAcceleration().

Обратите внимание, что onDeviceReady() вызывается с помощью

document.addEventListener('deviceready', this.onDeviceReady, false) 

(это стандартный «Hello World» приложение без каких-либо изменений, кроме добавления предупреждений и акселерометр обратного вызова.

ответ

5

Добавление плагинов запись в конфиг .xml недостаточно для добавления плагина к кордовому приложению.Новый собственный код должен быть установлен и привязан к навигатору по кордове или телефонной карте cli.

Вот guide.

См. Доступ к функции раздел.

Как вы можете заметить, cordova cli обработает модификацию config.xml для вас.

В любом случае, я бы порекомендовал вам пользоваться этим приятным grunt plugin. Он может легко управлять подключаемыми модулями через PluginID или URL-адрес. Вы можете найти информацию для своего плагина для такого случая here и другие плагины here

+0

Удивительный! Это сработало! Мне просто нужно было запустить плагин cordova add org.apache.cordova.device-motion' (без каких-либо изменений в XML). Спасибо! –

+0

Уточнение: мне не нужно было вручную изменять XML. Команда «cordova plugin» изменила его для меня. –

1

Вот как я смог получить доступ к акселерометру на Android.

Установить плагин движения устройства cordova plugin add org.apache.cordova.device-motion

Тогда в onDeviceReady обратного вызова:

window.addEventListener("devicemotion", deviceMotionUpdate, true); 

function deviceMotionUpdate(e){ 
    console.log("x: ", e.accelerationIncludingGravity.x); 
    console.log("y: ", e.accelerationIncludingGravity.y); 
    console.log("z: ", e.accelerationIncludingGravity.z); 
} 

Вы можете изменить console.logs на сигналы, если у вас нет удаленной настройки отладки.

Смежные вопросы