Chrome移动版和Safari移动版中的陀螺仪值不同

5

我正在构建一个小型全景照片查看器,其中有一个选项可以使用陀螺仪浏览场景。我正在从deviceOrientation事件中获取数据,并将欧拉角转换为旋转矩阵,然后通过一些变换最终移动一个带有3dMatrix转换的CSS立方体。

我的问题是,在不同设备上的不同浏览器中,从deviceOrientation事件中获得的数据非常不同,而且我不明白为什么会出现这种情况。

在我尝试过的几乎所有iPhone上,使用safari mobile和Chrome都能很好地工作。值的出现是有意义的,整个体验非常流畅。

在Samsung Galaxy S3上,使用Chrome,我的数据完全不稳定。alpha值似乎并不代表绕z轴的旋转,而且值之间存在巨大的跳跃,例如beta在只有微小运动的情况下从50度跳到130度。

在Galaxy Tab S 8.4英寸的Chrome浏览器中,我仍然得到一些不稳定的值,存在一些来回颤抖,但至少得到了逼近所需行为的东西。

在Nexus 7第二代上,使用Chrome,体验非常连贯而且有意义。与iPhone相比,它的渲染有些卡顿,但是它正在正确地旋转一切,并且值是合理的。

有人知道我如何能够解决这些问题,或者我应该如何解决这些问题吗?它们可能是Samsung Android的一个问题,或者在操作系统最新版本的Android本身中存在问题。

你有什么想法?建议?我的确迷失了方向。

谢谢!

2个回答

4

在这里,您可以找到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页面以下载和使用。

希望这些对您有所帮助。 享受!


非常感谢这个!我会尝试将它安装到我们的应用程序中,并看看它表现如何。最近我遇到了一些非常奇怪的行为,主要是针对安装了最新操作系统的三星设备。数值不稳定且毫无意义。α角度在绕z轴旋转1/2-3/4时保持在259度左右,然后突然下降到约180度,再下降到90度。没有任何中间值。这与安装新操作系统之前和之后的数据差异很大。 - Octothorpe
我刚刚在一个安装有KitKat 4.4.2的三星Galaxy S5上进行了快速测试。在原生浏览器中,我看到了你提到的问题,但在Chrome中,它按预期工作。:( 我会更详细地研究并尝试解决这个问题。如果准备好了,我会告诉你。 - Doruk Eker
非常感谢你,Doruk!设备之间似乎仍然存在很多不一致性。目前,我在所有三星设备上仍然遇到麻烦。我的三星S3完全出问题了。它会翻转和旋转,并且对于实际的alpha、beta和gamma角度表现得完全不合逻辑。在Firefox和Chrome 37中,三星Tab 10.1和Acer Iconia A1-830都没有从陀螺仪API中获取任何数据。我只得到NULL值。我的代码在我测试过的所有iPhone以及Nexus 7上都能完美运行。 - Octothorpe
目前,我能想到的唯一解决方案是嗅探用户代理,并仅支持与该功能良好配合的特定设备。我还认为,这个问题与三星在其专有的Android版本的最新发布中的陀螺仪代码有关。可能谷歌已经意识到了这一点,并关闭了他们的陀螺仪API,直到问题得到解决。 - Octothorpe
我们相信iPhone :) 幸运的是,它几乎总是按预期工作。三星S3是一款相当老的设备/操作系统,不确定他们是否按预期实现了标准。Alpha、Beta和Gamma角度是欧拉角,它们的工作方式与绕轴旋转略有不同。要获得绕轴旋转,您需要按特定顺序应用它们或者如果您的目标平台支持(如Unity3D),则应用为欧拉角。在博客文章的第一部分中,有来自Mozilla的示例。 - Doruk Eker
我打算给GyroNorm添加一些“isSupported”属性,这样你就不需要欺骗设备了。我还将更新演示文件,以便您更轻松地测试设备。但是我不能保证何时完成。现在请确保您有好的备用方案 :) - Doruk Eker

0
我发现(在以前处理设备方向时,不确定是否已更改)Android 上的一个轴值与 iOS 值相反。我不得不创建一个包装器方法来反转 Android 并应用一些模糊的乘数,以使值可比较,但是 Android 手机之间的灵敏度将会有所不同,因此您必须找到一些可接受的折衷方案。

谢谢!我会尝试将值并排比较,看看能否让它更有意义。如果有任何发现,我会回报的。 - Octothorpe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接