У меня есть следующий код для проверки ориентации устройства и обработки движения устройства в HTML 5. Я получил это от http://dev.w3.org/geo/api/spec-source-orientation.html. Я протестировал свой код с помощью iPhone3G, и событие движения было перехвачено.Я не знаю, почему ориентация устройства не была поймана.Я считаю, что, поскольку iPhone3G не поддерживает Compass, я не смог перехватить событие 'compassneedscalibration' .
Я протестировал приложение в браузере Android.(HTC Wildfire).Я не мог получить ни одно из событий.Пожалуйста, поделитесь, почему мы не получаем события в Android Mobile?
window.addEventListener("compassneedscalibration", function(event) {
alert('Your compass needs calibrating! Wave your device in a figure-eight motion');
event.preventDefault();
}, true);
window.addEventListener("deviceorientation", function(event) {
// process event.alpha, event.beta and event.gamma
alert("deviceorientation");
}, true);
window.addEventListener("devicemotion", function(event) {
// Process event.acceleration, event.accelerationIncludingGravity,
// event.rotationRate and event.interval
alert("devicemotion");
}, true);
ОБНОВЛЕНИЕ 1
Во время тестирования на iPhone и iPad я заметил одну вещь:устройство движется или нет, событие продолжало запускаться непрерывно без остановки.
ОБНОВЛЕНИЕ 2
Я нашел причину вопроса, который я поставил в ОБНОВЛЕНИЕ 1 .Похоже, что API обнаруживает и передает данные акселерометра 50 раз в секунду.