Подтвердить что ты не робот

Акселерометр доступа через Javascript в Android?

Есть ли способ получить доступ к данным акселерометра, используя Javascript в браузере Android? Я знаю, что он поддерживает "onorientationchange", но я хотел бы получить все.

Уточнение: я спрашиваю, как это сделать на веб-сайте, а не в родном приложении.

4b9b3361

Ответ 1

Начиная с ICS, Android 4.0, вы можете использовать событие "devicemotion" через прослушиватель событий JavaScript для доступа к данным акселерометра. См. Документацию W3C о доступе к ней - http://dev.w3.org/geo/api/spec-source-orientation.html.

Примечание. Название документа W3C называется "ориентация устройства", но спецификация действительно включает документацию событий "devicemotion".

Ответ 2

Создание обновления для этого потока.

HTML5 позволяет кому-то это сделать. Обнаружение того, присутствует ли акселерометр, легко.

    if (window.DeviceMotionEvent == undefined) {
        //No accelerometer is present. Use buttons. 
        alert("no accelerometer");
    }
    else {
        alert("accelerometer found");
        window.addEventListener("devicemotion", accelerometerUpdate, true);
    }

В функции, которую вы определяете для приема событий акселерометра, вы можете посмотреть член accelerationIncludingGravity.

function accelerometerUpdate(e) {
   var aX = event.accelerationIncludingGravity.x*1;
   var aY = event.accelerationIncludingGravity.y*1;
   var aZ = event.accelerationIncludingGravity.z*1;
   //The following two lines are just to calculate a
   // tilt. Not really needed. 
   xPosition = Math.atan2(aY, aZ);
   yPosition = Math.atan2(aX, aZ);
}

Дополнительную информацию можно найти здесь: http://dev.w3.org/geo/api/spec-source-orientation.html

Ответ 3

Вы можете попробовать с PhoneGap, который предоставляет API для доступа к акселерометру из javascript.

Здесь документация.

Ответ 4

Если вы пытаетесь получить доступ к акселерометру с веб-страницы, размещенной на сервере (verus, встроенной в собственное приложение через WebView), чем данные акселерометра не отображаются на данный момент для Android. Вы можете найти более подробную оценку здесь: http://www.mobilexweb.com/blog/android-froyo-html5-accelerometer-flash-player.

Вы также можете проверить этот пост SO: Обнаружение вращения Android-телефона в браузере с помощью JavaScript

Ответ 5

Если я правильно читаю документы, вы можете создать класс (внутри Java/Android), который предоставляет функциональные возможности акселерометра, необходимые для публичных функций.

Затем настройте javascript-интерфейс для веб-просмотра, используя вызов addJavascriptInterface, который делает публичные функции в этом классе доступными для вызова из javascript.

Ответ 6

Глядя на это сообщение flash.sensors.Accelerometer на Android в веб-браузере, похоже, данные акселерометра доступны для вспышки. Таким образом, возможное обходное решение (по крайней мере для устройств со вспышкой) будет небольшим апплетом, который захватил данные для вас.

Звучит как взломать, но все равно звучит лучше, чем делать все в flash