У меня проблема с ориентацией в андроиде. Ориентация устройства — альбомная, которую я установил в файле AndroidManifest.xml.
android:screenOrientation="landscape"
Также я держу устройство в ландшафтном режиме, поэтому все (макеты, виды и т. Д.) В ландшафтном режиме, как я и хотел. Но только когда я держу устройство в портретной ориентации, оно дает мне нужные мне значения.
Я изменил код из Интернета, и он работает на HTC 3d EVO, Nexus 7 и Samsung Galaxy S3, но не на Galaxy Tablet 10".
Я нашел этот пост. Датчик ориентации Android отличается для разных устройств? Принятый ответ предлагает использовать getRotation () и remapCoordinateSystem(), но не упоминает, как это сделать.
Вот так я кончил.
SensorManager.getRotationMatrix(Rmat, Imat, gData, mData);
SensorManager.remapCoordinateSystem(Rmat, SensorManager.AXIS_Y, SensorManager.AXIS_MINUS_X, R2);
// Orientation isn't as useful as a rotation matrix, but
// we'll show it here anyway.
SensorManager.getOrientation(R2, orientation);
float incl = SensorManager.getInclination(Imat);
FontTextView pitchText = (FontTextView)findViewById(R.id.pitch_text);
if((int)(orientation[1]*90) <= -110 && !newQuestionIsActive) {
newQuestionIsActive = true;
pitchText.setText("Bring new question");
}
else if(Math.abs((int)(orientation[2]*90)) <= 200 && (int)(orientation[1]*90) >= -30 && newQuestionIsActive) {
newQuestionIsActive = false;
pitchText.setText("Not Correct!");
}
else if(Math.abs((int)(orientation[2]*90)) > 200 && (int)(orientation[1]*90) >= -30 && newQuestionIsActive) {
newQuestionIsActive = false;
pitchText.setText("Congratulations!");
}
Теперь, как я должен использовать getRotation() в этом коде? И, возможно, было бы полезно краткое объяснение, почему эти 3 устройства работают нормально, но не Galaxy Tablet.
Об этой проблеме говорит документация Android;
Наконец, если ваше приложение сопоставляет данные датчика с изображением на экране, вам нужно использовать метод getRotation() для определения поворота экрана, а затем использовать метод remapCoordinateSystem() для сопоставления координат датчика с координатами экрана. Вам нужно сделать это, даже если в вашем манифесте указано отображение только в книжной ориентации.
http://android-developers.blogspot.com/2010/09/one-screen-turn-deserves-another.html