Так что я работаю над андроидным приложением для Android, и я использую плагин компаса. Я следовал инструкциям с сайта phonegap, и все работает отлично, кроме одного.Прочитайте заголовок компаса только один раз
Первый пример (http://docs.phonegap.com/en/2.0.0/cordova_compass_compass.md.html#Compass) должен указывать заголовок (степень) в предупреждении один раз, но значение всегда равно 0! Но почему?
Итак, я работал над кодом, поэтому он будет похож на второй пример (без кнопок). Этот код проверяет, отображает ли степень каждую секунду. Теперь значение не равно 0, но от 1 до 360. это значение, которое я хочу, но я не хочу его каждую секунду, я хочу его только один раз. Есть ли способ проверить это только один раз?
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova is ready
function onDeviceReady() {
navigator.compass.getCurrentHeading(onSuccess, onError);
}
// onSuccess: Get the current heading
function onSuccess(heading) {
alert('Heading: ' + heading.magneticHeading);
}
// onError: Failed to get the heading
function onError(compassError) {
alert('Compass Error: ' + compassError.code);
}
Так это стандартный JavaScript, и этот код должен дать заголовок Juist один раз, но он всегда дает 0.
$(document).ready(function() {
// The watch id references the current `watchHeading`
var watchID = null;
// Wait for Cordova to load
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova is ready
function onDeviceReady() {
startWatch();
}
// Start watching the compass
function startWatch() {
var options = { frequency: 100 };
watchID = navigator.compass.watchHeading(onSuccess, onError, options);
}
// Stop watching the compass
function stopWatch() {
if (watchID) {
navigator.compass.clearWatch(watchID);
watchID = null;
}
}
// onSuccess: Get the current heading
function onSuccess(heading) {
var element = document.getElementById('heading');
element.innerHTML = heading.magneticHeading;
if (heading.magneticHeading > 180) {
document.getElementById('background').style.backgroundColor = 'green';
} else {
document.getElementById('background').style.backgroundColor = 'blue';
}
}
// onError: Failed to get the heading
function onError(compassError) {
alert('Compass error: ' + compassError.code);
}
});
Этот код работает, но он проверяет, не один раз, но multple раз в секунду.
Я отредактировал мое сообщение. Я скопировал код из телефонного разговора. Как вы можете видеть, он уже использует getCurrentHeading, и он использует его только тогда, когда устройство готово. – bbvanee
Какая версия устройства и ОС вы тестируете? – Geekswordsman
HTC желание и Android, и да, у телефона есть компас – bbvanee