- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要检索手机的方向。目前我写了这个:
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()){
case Sensor.TYPE_MAGNETIC_FIELD:
this.mag_vals = event.values.clone();
this.sensorReady = true;
break;
case Sensor.TYPE_ACCELEROMETER:
this.acc_vals = event.values.clone();
break;
}
if (this.mag_vals != null && this.acc_vals != null && this.sensorReady) {
this.sensorReady = false;
float[] R = new float[ProjectConstants.SIZE_MATRIX];
float[] I = new float[ProjectConstants.SIZE_MATRIX];
SensorManager.getRotationMatrix(R, I, this.acc_vals, this.mag_vals);
SensorManager.getOrientation(R, this.actual_orientation);
...
如果我将手机放在平坦的表面上并在该表面上旋转它,此代码可让我获取手机的方向。
我不明白的是,如果我将手机向上移动 this.actual_orientation[0]
的值,这是 [此处][1] 中描述的 zed 轴上的旋转,尽管没有轮换,但值(value)增加了。
有人知道发生了什么吗?
编辑
另一个奇怪的事情..
我在办公室试用了我的应用程序,它出现了我之前描述的奇怪行为。我在同一个办公室(同样的情况)尝试了一个我从市场上拿来的指南针应用程序,它的行为和我的一样。当我向上移动手机时,值(value)一直在变化。我在同一个办公室(同样的情况)试过 i-phone 指南针,它没有那种奇怪的行为!
然后当我到家时,我尝试了我的应用程序和我的 Android 手机的指南针应用程序,它们都能正常工作!!即使我向上移动手机,该值也很稳定...
非常感谢。
[1]: http://developer.android.com/reference/android/hardware/SensorManager.html#getOrientation(float[] , float [])
最佳答案
设备获得的方向估计部分取决于局部磁场方向。在建筑物内、铁结构附近和电器附近,感测到的磁场可能会随着以英尺为单位测量的距离发生显着变化。使用手持磁力计或高斯计可以很容易地看到这种效果。
我怀疑这些扭曲是导致您的应用程序出现奇怪行为的原因。
关于Android - SensorManager getOrientation 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3195836/
除了 Display.getOrientation() 已弃用之外,Display.getRotation() 和 Display.getOrientation() 之间还有什么区别? 是否都返回等于
我想了解 Android 传感器管理。如果我希望包含陀螺仪以获取手机方向,当我调用 getOrientation(..) 并且手机具有陀螺仪传感器时,它会自动完成,我说得对吗? 因此,如果手机有加速度
安卓getOrientation()函数说: 索引 0 处的值:方位角介于 pi 和 -pi 之间 索引 1 处的值:音高介于 pi 和 -pi 之间 索引 2 处的值:Roll 在 -pi/2 和
我遇到了一个非常烦人的问题,AR View 就像一个指南针。因此,当我纵向握住手机(这样屏幕就指向我的脸)时,我会调用 remapCoordinateSystem纵向握住时音高为0。然后方位角(罗盘功
我正在为平板电脑开发一个应用程序,平板电脑将放在一个围绕给定点旋转的支架上。这意味着当应用程序首次打开时,很少从平板电脑移动。该应用程序将根据平板电脑在支架上的旋转显示各种内容。无论我多么努力地搜索,
我目前在 Android 上使用加速度计,遇到了一个有趣的情况。我需要找出以下各项的最大值,而无需最终用户在某些精心设计的校准程序中翻转手机。我正在寻找的具体值是... @Override publi
我需要检索手机的方向。目前我写了这个: public void onSensorChanged(SensorEvent event) { switch (event.sensor.getType(
我正在创建 3D Compass 应用程序。 我正在使用 getOrientation获取方向的方法(几乎与 here 相同的实现)。如果我将手机放在 table 上,效果很好,但是当手机顶部指向天空
我使用 Sensor.TYPE_ORIENTATION 来确定设备的当前角度,但 TYPE_ORIENTATION 在 API 版本 8 上已弃用。在 SensorManager 手册中,它引用了 g
我有一个在 fragment 中实现的 RecyclerView,我正在尝试向代码中添加分隔符。我让 RecylcerView 按预期工作,但 LinearLayoutManager 无法解析 get
如何用getOrientation函数获取真北和磁北? getOrientation 函数在第二个参数中返回带有方位角、俯仰角和横滚角的 float[3]...我如何根据这些值计算出真正的北方? 谢谢
我在以下的帮助下获得了我的手机方向 SensorManager.getOrientation 但是结果很不稳定,大概+-8度,有什么好的过滤结果的方法吗? 这是我获取值的方式: public void
假设:手机平放(与地面平行)。 我正在使用 getRotationMatrix() 和 getOrientation (float[] R, float[] values) 获取方位角。在这个假设下,
我在使用 getOrientation 时遇到了一些麻烦。我在横向模式下运行我的应用程序,但我在使用一个轴时遇到了问题。代码中有更多解释,一些图像: valuesMagnet = n
我注意到,当我将手机放在地平线以下时,我得到 > -90。当我开始倾斜手机使其指向天空时,它会反射大约 -90 左右、-88、-90、-88。当它从地面倾斜到天空时。 有没有人遇到过这种情况。 (它似
我一直在努力使用 getOrientation 获取设备的实际方向。通过 TYPE_ACCELEROMETER 和 TYPE_MAGNETIC_FIELD 获取加速度计和磁场读数与通过 TYPE_OR
我正在用 android 开发一个应用程序。该应用程序在数据库中保存了一些引号,我想使用手机的传感器在屏幕上滑动引号。所以我希望当手机向左移动时,我可以在屏幕上看到下一个报价,当我将手机向右移动时,我
本文整理了Java中us.ihmc.yoVariables.variable.YoFramePoseUsingYawPitchRoll.getOrientation()方法的一些代码示例,展示了YoF
我想弄清楚 getRotationMatrix() 和 getOrientation() 是如何工作的。 到目前为止,我已经知道在 getRotationMatrix() 函数中,它将重力矢量与磁矢量
要在 Android 中从欧拉角(例如俯仰、滚转、方位角)中获取方向,需要执行以下操作: SensorManager.getRotationMatrix(float[] R, float[] I, f
我是一名优秀的程序员,十分优秀!