【问题标题】:Android device angle on vertical axis while device stays still设备保持静止时垂直轴上的 Android 设备角度
【发布时间】:2013-05-15 17:51:52
【问题描述】:

我正在开发我的第一个应用程序,对于一些计算,我需要一个垂直轴的角度。基本上我正在尝试制作简单的测量工具,可以在按钮点击时进行计算。 我有高度(H),其中是设备,我需要设备垂直轴的角度。有了这些值,我就可以计算 sin 等等。

我尝试使用此链接 (finding orientation using getRotationMatrix() and getOrientation()) 中的代码来获取值,但它崩溃了,而且我认为这不是我想要的值,因为设备保持静止。

说明我的意思(我有“H”值,我正在搜索角度“a”或可以从中提取它的数据):

任何有用的链接、教程或示例都会非常有帮助。

【问题讨论】:

    标签: android android-sensors android-orientation


    【解决方案1】:

    我假设 Android 设备将沿着您绘制的三角形的斜边放置,因此如果设备平放在桌子上,那么您的角度“a”将为 90 度,如果设备直立,则角度“a”为零。如果是这样,那么该角度“a”与设备的间距有关,这正是您应该能够通过使用 getRotationMatrix() 和 getOrientation() 获得的。但是,当设备平放在桌子上时,俯仰角通常定义为零,而当它直立时,俯仰角通常定义为 90 度,因此您的角度“a”等于(90 度 - 俯仰角)。注意单位,有时角度是弧度,有时是度数。

    如果你的代码崩溃了,那么你一定是不小心在某个地方引入了一个错误,因为我肯定有代码使用 getRotationMatrix() 和 getOrientation() 而不会崩溃。

    当设备接近垂直位置时,您会发现 getOrientation() 生成的某些方向值变得不稳定。这是一个被称为Gimbal lock 的问题,因为当设备垂直时,方位角和滚动是一回事。但是,音调应该保持可靠。

    如果您在设备垂直时需要可靠的方位角和俯仰角,那么您可以查看my answer to the question 'Android Compass that can Compensate for Tilt and Pitch'。该答案的代码绝对有效,如果您无法使 getRotationMatrix() 和 getOrientation() 正常工作,那么由此产生的音调对您来说将很好。

    【讨论】:

      猜你喜欢
      • 2015-11-25
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 2019-01-13
      • 1970-01-01
      • 2016-10-21
      相关资源
      最近更新 更多