Я хочу получить текущую магнитную ориентацию независимо от текущей ориентации экрана (пейзаж или портрет).Как получить правильный подшипник (магнитная ориентация) независимо от ориентации экрана?
Я нашел this пример, но это не ориентация независимая, не так ли? И мне тоже не помогло this. Я также читал http://android-developers.blogspot.de/2010/09/one-screen-turn-deserves-another.html.
Это мой текущий подход с устаревшим, как я не хочу использовать (краткий):
mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
private SensorEventListener sensorEventListener = new SensorEventListener() {
public void onSensorChanged(SensorEvent event) {
/* Get measured value */
float current_measured_bearing = (float) event.values[0];
/* Compensate device orientation */
switch (((WindowManager) getSystemService(WINDOW_SERVICE))
.getDefaultDisplay().getRotation()) {
case Surface.ROTATION_90:
current_measured_bearing = current_measured_bearing + 90f;
break;
case Surface.ROTATION_180:
current_measured_bearing = current_measured_bearing - 180f;
break;
case Surface.ROTATION_270:
current_measured_bearing = current_measured_bearing - 90f;
break;
}
Но последняя часть, безусловно, не так! Как я могу использовать новый метод getRotationMatrix()
правильно в этом случае? (Независимо от ориентации) Или просто нужно использовать другие значения массива event.values[]
на основе матрицы вращения? Или мне нужно «переназначить координаты»? Итак, that правильный способ достижения этого?
Я разрабатываю устройства с поворотом экрана 360 ° и уровнем API 11+.
Я знаю, что эти вопросы задаются очень часто, но я просто не могу передать их ответы на мой вопрос.
У меня была та же проблема размещена здесь: http://stackoverflow.com/questions/11772923/how-can-i-get-the-magnetic-field-vector-independent-the-device-rotation, но ответ не сработал для меня. Возможно, вам повезло больше. – Ridcully
Вам все еще нужно? Потому что, может быть, нам придется использовать другие значения массива event.values []? основанный на вращении экрана? – felixd
Нет, я отменил проект (некоторые вещи AR), поскольку оказалось, что датчики вращения большинства устройств Android недостаточно точны для того, что я имел в виду. – Ridcully