Определение независимо от ориентации устройства - PullRequest
0 голосов
/ 17 апреля 2011

Я занимаюсь разработкой приложения AR на Android и хотел бы, чтобы независимо от ориентации устройства получались горизонтальные и вертикальные значения, очень похожие на спиртовой уровень.Например, пользователь держит свое устройство в портретном режиме и раскручивает телефон. Я бы хотел, чтобы горизонт на телефоне соответствовал естественному горизонту.Я поиграл со значением крена, возвращенным из диспетчера сенсоров, но, похоже, он учитывает высоту тона (т. Е. Устройство сейчас находится в ландшафтном режиме, то, что должно быть, тональность влияет на крен.)

Кроме того, при чтении тонаЯ бы хотел, чтобы горизонт двигался вверх и вниз независимо от крена.В тот момент, когда устройство повернулось на 90 градусов, любые изменения высоты тона перемещаются в горизонтальном направлении, а не в вертикальном направлении.

Любые указатели?

Заранее спасибо.

Пол

1 Ответ

0 голосов
/ 17 апреля 2011

Да, я думаю, что ваша лучшая ставка, которая, как я понимаю, имеет свои недостатки, заключается в использовании акселерометров для определения направления движения земли.

Используйте что-то вроде этого ...

    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

...