我正在开发我的第一个应用程序,对于一些计算,我需要一个垂直轴的角度。基本上我正在尝试制作一个简单的测量工具,可以在按钮点击上进行计算。 我有高度(H),其中是设备,我需要设备垂直轴的角度。拥有这些值我将能够计算罪等等。
我尝试使用此链接(finding orientation using getRotationMatrix() and getOrientation())中的代码来获取值,但它崩溃了,而且我认为这不是我想要的值,因为设备保持不变。
Iliustration of my mean(我有'H'值,我正在寻找角'a'或数据,我可以从中提取它):
任何有用的链接,教程或示例都会非常有用。
答案 0 :(得分:0)
我认为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()工作,那么由此产生的音调对你来说会很好。