Access accelerometer via Javascript in Android?

前端 未结 6 519
夕颜
夕颜 2020-12-02 23:51

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.

C

相关标签:
6条回答
  • 2020-12-03 00:15

    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.

    0 讨论(0)
  • 2020-12-03 00:17

    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

    0 讨论(0)
  • 2020-12-03 00:25

    Looking at this post flash.sensors.Accelerometer on Android within web browser it seems accelerometer data is available to flash. So a possible workaround (at least for devices which have flash) would be a small flash applet which grabbed the data for you.

    Sounds like a hack, but still sounds better than making the whole thing in flash

    0 讨论(0)
  • 2020-12-03 00:26

    You could try with PhoneGap that provides API to access the accelerometer from javascript.

    Here the documentation.

    0 讨论(0)
  • 2020-12-03 00:33

    If you are trying to access the accelerometer from a webpage hosted on a server (verus one integrated into a native application through WebView), than the accelerometer data does not appear to be available as of now for Android. You can find a more detailed assessment here: http://www.mobilexweb.com/blog/android-froyo-html5-accelerometer-flash-player .

    You might also want to check out this SO post: Detect rotation of Android phone in the browser with JavaScript

    0 讨论(0)
  • 2020-12-03 00:38

    If I'm reading the docs correctly, you could set up a class (within Java/Android) that provides the accelerometer functionality you need in public functions.

    Then setup a javascript interface for the webview using the addJavascriptInterface call, which makes the public functions in that class available to be called from within javascript.

    0 讨论(0)
提交回复
热议问题