无论设备方向如何,都要确定

时间:2011-04-17 16:40:25

标签: android math tilt-sensor

我正在Android上开发一个AR应用程序,并希望无论设备滚动方向如何获得水平和垂直值,都非常像精神层面。一个例子是用户将他们的设备保持在纵向模式并旋转他们的手机,我希望手机上的地平线与自然地平线相匹配。我玩过传感器管理器返回的滚动值,但它似乎考虑了音高(即设备现在处于横向模式,音调应该影响滚动。)

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

任何指针?

提前致谢。

1 个答案:

答案 0 :(得分: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