javascript - 标准化加速度计输出

标签 javascript html mobile cross-browser accelerometer

我目前正在编写一个 HTML5 Web 应用程序,该应用程序严重依赖于加速度计数据。我们的想法是让应用程序尽可能跨平台(iPhone、iPad、Android、Windows Phone 等)

我遇到麻烦是因为,首先,有几种方法可以通过 HTML5 获得设备的加速:

  • DeviceMotionEvent
  • 设备方向事件
  • navigator.accelerometer

其次,不同的设备给出不同的值。例如,一台设备可能给出 0-10 之间的值,另一台设备可能给出 0-100 之间的值。更令人沮丧的是,同一设备上的不同浏览器对此也不一致。

有没有一种方法可以以某种方式获取这些信息并以一种无需为设备和浏览器的每种组合编写单独案例的方式使用它?例如,将加速度计数据从原始的、无意义的数字转换为设备的方向(以度为单位)?

最佳答案

您始终可以为每个流行的设备设置一个除数,或者以某种方式获取最大值和最小值。如果最小值为负数,则从当前值中减去该最小值,使其必须为正数,然后除以最大值。然后您应该得到 0 到 1 之间的小数。没有保证。我用随机数测试了这个,但不是实际的加速器输入,它似乎将数字转换为小数。

if (device=="iphone")
{
minval=-10 ; maxval=10
    }
if (device=="somethingelse")
    {
    minval=0 ; maxval=100
        }
if (minval<0)
        {
        rawdataa = rawdata - minval
        }
    rawdataaa = rawdataa / maxval
    alert(rawdataaa);

关于javascript - 标准化加速度计输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13999385/

相关文章:

javascript - 除非我单击页面,否则 Firefox 不会调用 `beforeunload` 事件

html - 在移动设备上保持页面宽度相同

css - 最终用户是否可以替换 Css 文件?

javascript - YouTube iFrame API 视频在移动设备上间歇性播放

Android 蓝牙 LE 错误 : Failed to register callback

javascript - 根据 getDay 和 getHours + getMinutes 显示 div

javascript - 使用来自重构的分支

javascript - 使用 getElementsByTagName 选择元素

javascript - 如何比较 Angular ng-class 中的日期

javascript - 为什么将 Window 对象传递给函数