【发布时间】:2014-05-21 20:19:25
【问题描述】:
我正在尝试使用英特尔 XDK 编写一个应用程序,该应用程序允许您通过手机打开和关闭加速度计并记录所进行的测量。
它在英特尔 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;
}
}
【问题讨论】:
标签: android cordova accelerometer intel-xdk