我尝试使用英特尔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()&#34 ;。您是否必须在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;
}
}
答案 0 :(得分:0)
看看我为了演示目的而放在一起的这个例子。它最终将成为一个样本。它为加速度计代码提供了更彻底的处理。你应该能够从中收集你需要的东西:
https://github.com/xmnboy/hello-cordova
您将在此文件中找到所需内容:
https://github.com/xmnboy/hello-cordova/blob/master/www/js/cordova-acc.js
它可以在XDK模拟器和iOS,Android(旧版,新版和Crosswalk版)和Win8手机版以及App预览版中构建的应用程序中正常运行。
要特别注意的一件事是,当您初始化加速计代码时,它必须在设备就绪事件之后发生。这个文件中有一些花哨的设备就绪检测代码:
https://github.com/xmnboy/hello-cordova/blob/master/www/js/init-dev.js
将准备好处理Cordova设备,并准备好XDK设备并在常规浏览器中运行。
最终,我会更新此应用,以便它也适用于HTML5设备动态API ...