通过Android中的Javascript访问加速度计?

时间:2010-12-17 20:28:00

标签: javascript android accelerometer

有没有办法在Android的浏览器上使用Javascript访问加速度计数据?我知道它支持“onorientationchange”,但我想得到一切。

澄清:我问的是如何在网站上执行此操作,而不是原生应用。

6 个答案:

答案 0 :(得分:17)

从ICS,Android 4.0开始,您可以通过JavaScript事件监听器使用'devicemotion'事件来访问加速度计数据。请参阅W3C文档,了解如何访问它 - http://dev.w3.org/geo/api/spec-source-orientation.html

注意 - W3C文档标题以“设备方向”命名,但规范确实包含“devicemotion”事件文档。

答案 1 :(得分:14)

对此主题进行更新。

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

答案 2 :(得分:5)

您可以尝试使用提供API的PhoneGap来从javascript访问加速度计。

Here文档。

答案 3 :(得分:4)

如果您尝试从服务器上托管的网页(通过WebView集成到本机应用程序中的网页)访问加速度计,那么加速度计数据似乎现在不可用适用于Android。您可以在此处找到更详细的评估:http://www.mobilexweb.com/blog/android-froyo-html5-accelerometer-flash-player

您可能还想查看此SO帖子:Detect rotation of Android phone in the browser with JavaScript

答案 4 :(得分:1)

如果我正确阅读文档,您可以设置一个类(在Java / Android中),它提供公共函数中所需的加速度计功能。

然后使用addJavascriptInterface调用为webview设置一个javascript界面​​,这使得该类中的公共函数可以在javascript中调用。

答案 5 :(得分:0)

看一下这篇文章flash.sensors.Accelerometer on Android within web browser,似乎加速计数据可用于flash。因此,一个可能的解决方法(至少对于具有闪存的设备)将是一个小型闪存小程序,它可以为您抓取数据。

听起来像是一个黑客,但听起来仍然比制作闪光灯中的整个事情更好