小编gis*_*ing的帖子

当我的Android设备不平时,我该如何计算方位角,音高,方向?

我正在使用Android重力和磁场传感器通过SensorManager.getRotationMatrix和SensorManager.getOrientation计算方向.这给了我方位角,俯仰和方向数.当设备平放在桌子上时,结果看起来很合理.

但是,我在清单中禁用了纵向和横向之间的切换,因此getWindowManager().getDefaultDisplay().getRotation()始终为零.当我将设备旋转90度以使其垂直竖立时,我遇到了麻烦.有时这些数字似乎非常错误,我意识到这与万向节锁相关.但是,其他应用程序似乎没有这个问题.例如,我将我的应用与两个免费传感器测试应用程序(传感器测试仪(Dicotomica)传感器监测(R软件))进行了比较.当设备平坦时,我的应用程序同意这些应用程序,但当我将设备旋转到垂直位置时,可能会有很大差异.这两个应用程序似乎彼此一致,那么他们如何解决这个问题呢?

android sensor orientation

12
推荐指数
2
解决办法
1万
查看次数

Android上方位角/偏航和滚动的方向传感器值不一致

我无法获得良好的方向传感器读数.传感器读数似乎不可靠,因此我针对两个免费传感器测试应用程序(传感器测试仪(Dicotomica)传感器监测(R软件))测试了我的代码.我发现虽然我的读数经常与传感器测试应用程序一致,但偶尔方位角/偏航和滚动的值差异高达40度,尽管音高读数大多是一致的.两个免费的应用程序似乎总是彼此一致.

我将我的代码放入一个微小的Android活动中,并得到了同样的不一致.代码如下:

public class MainActivity extends Activity implements  SensorEventListener {

    private SensorManager mSensorManager;
    private float[] AccelerometerValues;
    private float[] MagneticFieldValues;
    private float[] RotationMatrix;
    private long nextRefreshTime;           // used to ensure dump to LogCat occurs no more than 4 times a second
    private DecimalFormat df;               // used for dumping sensors to LogCat

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mSensorManager = (SensorManager)getSystemService(android.content.Context.SENSOR_SERVICE);
        Sensor SensorAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        mSensorManager.registerListener(this, SensorAccelerometer, SensorManager.SENSOR_DELAY_UI);  
        Sensor SensorMagField = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
        mSensorManager.registerListener(this, SensorMagField, SensorManager.SENSOR_DELAY_UI);
        AccelerometerValues …
Run Code Online (Sandbox Code Playgroud)

android orientation android-sensors sensormanager

5
推荐指数
2
解决办法
9784
查看次数