不同的陀螺仪值在chrome移动和safari移动

Different gyroscope values in chrome mobile and safari mobile

本文关键字:移动 chrome safari 陀螺      更新时间:2023-09-26

我目前正在构建一个小型全景照片查看器,它可以选择使用陀螺仪导航场景。我正在从deviceOrientation事件中获取数据,并将欧拉角转换为旋转矩阵,然后通过一些转换,最终使用3dMatrix转换移动css立方体。

我的问题是,我得到非常不同的数据来自deviceOrientation事件在不同的浏览器在不同的设备,我不明白为什么。

在我试用过的几乎所有iPhone上,无论是safari移动版还是Chrome,一切都运行得很好。游戏的价值体现得很有意义,整个体验是无缝的。

在使用Chrome浏览器的三星Galaxy S3上,我的数据完全不稳定。alpha值实际上似乎并不代表绕z轴旋转,并且值有巨大的跳跃,例如beta仅用很小的运动就从50-130度跳跃。

在Chrome的Galaxy Tab S 8.4"上,我仍然得到一些不稳定的值,有一些来回抖动,但我至少得到了一些接近预期的行为。

在Nexus 7第二代上,在Chrome上,体验是连贯的,有意义的。与iPhone相比,它的渲染是不稳定的,但它正确地旋转了所有内容,并且值是有意义的。

有谁知道我如何能够解决这些问题,或者我应该如何解决它们?这可能是三星移植的安卓系统的问题,或者是最新版本的安卓系统本身的问题。

想法吗?想法吗?建议吗?在这一点上我真的迷路了。

谢谢!

你可以在这里找到JS事件的细节:
http://dorukeker.com/know-thy-gyroscope-and-js-part-i/


http://dorukeker.com/know-thy-gyroscope-and-js-part-ii/ 下面是我准备处理这些差异的JS文件:
https://github.com/dorukeker/gyronorm.js

更新:我刚刚更新了GitHub上的gyronorm.js。现在有一些函数可以告诉您某个变量在设备/浏览器组合上是否可用。查看GitHub页面下载和如何使用。

我希望这些有帮助。享受吧!

我发现(在过去使用设备方向时,不确定这是否已经改变)android上的一个轴值与iOS值相反。我必须为设备方向创建一个包装器方法,它将反转android并应用一些模糊的乘数来获得可比较的值,但android手机之间的灵敏度会有所不同,所以你必须找到一些可接受的中间地带。