Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Access accelerometer via Javascript in Android?

Is there any way to access accelerometer data using Javascript on Android's browser? I know it supports "onorientationchange", but I'd like to get everything.

Clarification: I'm asking how to do this in a website, not a native app.

like image 460
Jeff Lamb Avatar asked Dec 17 '10 20:12

Jeff Lamb


2 Answers

As of ICS, Android 4.0, you can use the 'devicemotion' event via a JavaScript event listener to access the accelerometer data. See the W3C documentation on how to access it - http://dev.w3.org/geo/api/spec-source-orientation.html.

Note - The W3C documentation title is named with 'device orientation', but the spec does indeed include 'devicemotion' event documentation.

like image 168
Bamerza Avatar answered Sep 24 '22 00:09

Bamerza


Making an update to this thread.

HTML5 lets someone do this. Detecting whether or not an accelerometer is present is easy.

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

In the function that you define to receive the accelerometer events, you can look at the accelerationIncludingGravity member.

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);
}

More information can be found here: http://dev.w3.org/geo/api/spec-source-orientation.html

like image 31
Joel Avatar answered Sep 25 '22 00:09

Joel