Функция SensorManager.getRotationMatrix (...) не работает в Android 3.0+. Я запустил приведенный ниже код на широком диапазоне телефонов / планшетов под управлением Android 2.x, и он работает просто отлично.
public void onSensorChanged(SensorEvent event) {
float[] magnetic = event.values;
if( accelerometer != null ) {
float[] array = new float[9];
SensorManager.getRotationMatrix(array, null, accelerometer, magnetic);
// in 3.0+, 'array' contains all 0's here, which is bad
SensorManager.getOrientation(array, orientation);
}
}