Получение 3D-ориентации Android-устройства

Большинство смартфонов оснащены 3-осевым гироскопом, 3-осевым магнитометром и 3-осевым акселерометром. Умное комбинирование измерений этих датчиков (фильтр Калмана) должно дать быструю, точную, бесшумную и абсолютную ориентацию устройства. Это может быть сохранено как кватернион или значения рыскания/тангажа/крена.

Каков самый простой способ добиться этого в Android? Операционная система уже выполняет эти расчеты за вас? Существуют ли реализации с открытым исходным кодом, которые можно было бы использовать?

Большинство примеров/учебников, которые я смог найти, сосредоточены только на одном типе датчика. Но для моего варианта использования было бы интересно только слияние всех трех датчиков с помощью правильной фильтрации ...


person Boris    schedule 02.04.2014    source источник


Ответы (1)


Вам необходимо реализовать интерфейс SensorEventListener. и в вашем классе вы должны объявить их:

Sensor sensor;
SensorManager sensorManager;

и переопределить эти методы:

public void onAccuracyChanged(Sensor sensor,int accuracy)
{

}

public void onSensorChanged(SensorEvent event)
{
}

и в конструкторе вашего класса (Активность или...)

sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
sensorManager.registerListener(this,sensor,SensorManager.SENSOR_DELAY_GAME);
person sadegh saati    schedule 02.04.2014