0

我正在 Android 上开发一个 AR 应用程序,并且希望无论设备滚动方向如何,都可以获得水平和垂直值,就像水平仪一样。一个例子是用户以纵向模式拿着他们的设备并旋转他们的手机,我希望手机上的地平线与自然地平线相匹配。我玩过传感器管理器返回的滚动值,但它似乎考虑了俯仰(即设备现在处于横向模式,应该是俯仰影响滚动。)

此外,在阅读音高时,我希望地平线上下移动,而不管滚动。目前,当设备滚动到 90 度时,任何俯仰变化都会在水平方向而不是垂直方向移动。

任何指针?

提前致谢。

保罗

4

1 回答 1

0

是的,我认为你最好的选择,我理解它的缺陷是使用加速度计来确定地面的方向。

使用这样的东西....

    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
    accelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

在你的 onCreate 方法中,然后把这个

    mSensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);

在你的 onResume 和这个来处理更新

public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        float xAcceleration = event.values[0];
        float yAcceleration = event.values[1];
        float zAcceleration = event.values[2];

然后,只需使用这些加速度值来确定地面的方向。:-) 我发现这种方式更加流畅,希望对您有所帮助。:-)

有关更多信息,请查看以下内容以获取更多信息:http: //developer.android.com/reference/android/hardware/SensorEvent.html#values

于 2011-04-17T17:04:32.087 回答