Я пытаюсь написать приложение с использованием Intel XDK, которое позволяет включать и выключать акселерометр через телефон и регистрировать сделанные измерения.
Он работает, как и ожидалось, в эмуляторе Intel XDK, но не запускается на устройстве через «тестирование» или в виде встроенного файла .apk.
Демонстрации акселерометра из программы XDK отлично работают на моих тестовых устройствах, поэтому я почти уверен, что это не аппаратная проблема на моих устройствах. Любые мысли по этому поводу будут очень признательны.
Хотя это может быть простой вопрос, есть ли место, где вы должны включить акселерометр для теста или сборки? Я знаю, что параметры сборки включают добавление/не добавление камеры, геолокации, контактов и т. д., но я ничего не видел для акселерометра. Я использую «сборку Android» по умолчанию, и в мой файл index.html загружены следующие скрипты (это находится в тегах скрипта прямо под функцией onDeviceReady()):
js/appframework.ui.min.js"
script src="intelxdk.js"
script src="cordova.js"
script src="js/accelerometer.js" (this is my file that has the JS referenced below. The "o)
Что я хочу сделать, так это иметь кнопку «начать ускорение записи» и кнопку «остановить ускорение записи» (по сравнению с примерами, в которых акселерометр работает постоянно). Единственный способ заставить приложение успешно запускаться, останавливаться и снова запускаться — это переместить intel.xdk.accelerometer.watchAcceleration(onsuccess, options);
из функции onDeviceReady() в функцию ниже под названием «startWatch()». Должны ли вы запускать связанные с устройством функции в функции onDeviceReady()?
Вот код:
var acc_data = []; // Array containing X,Y,Z accelerometer objects
var watchID = null;
function startWatch() {
// Start watching the acceleration
// Update acceleration every .1 seconds
var options = { frequency: 100, adjustForRotation: true };
watchID = intel.xdk.accelerometer.watchAcceleration(onSuccess, options);
var date = new Date();
track_id = "Arm_Test "+ date;
onSuccess;
}
// Success - Start watching accelerometer data
function onSuccess(acceleration) {
acc_data.push(acceleration);
var element2 = document.getElementById('arm_acc_test');
element2.innerHTML = track_id;
var element = document.getElementById('accelerometer');
element.innerHTML = 'Acceleration X: ' + acceleration.x + '<br />' +
'Acceleration Y: ' + acceleration.y + '<br />' +
'Acceleration Z: ' + acceleration.z + '<br />' +
'Timestamp: ' + acceleration.timestamp + '<br />';
}
// Stop watching the acceleration
function stopWatch() {
intel.xdk.accelerometer.clearWatch(watchID);
window.localStorage.setItem(track_id, JSON.stringify(acc_data));
var element3 = document.getElementById('arm_acc_test');
element3.innerHTML = "Test Complete";
var element4 = document.getElementById('accelerometer');
element4.innerHTML = "";
for (var i=0, len = acc_data.length; i<len; i++) {
var output = "x: " + acc_data[i]['x'] + "<br>" + "y: " + acc_data[i]['y'] + "<br>" +
"z: " + acc_data[i]['z'] + "<br>" + "timestamp: " + acc_data[i]['timestamp'] +
"<br><br>";
var element5 = document.getElementById('accelerometer');
element5.innerHTML += output;
}
}