電話の向きを取得するが、画面の向きを縦向きに修正するというフィリップのソリューションは、私にとって完璧です。
android:screenOrientation = "portrait"によってマニフェストで自動方向切り替えが無効になっている場合でも、SensorManagerクラスを使用してAndroidデバイスの方向を取得できます。
このコードを参照してください(Philippによる、上記のリンクを参照):
SensorManager sensorManager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);
sensorManager.registerListener(new SensorEventListener() {
int orientation=-1;;
@Override
public void onSensorChanged(SensorEvent event) {
if (event.values[1]<6.5 && event.values[1]>-6.5) {
if (orientation!=1) {
Log.d("Sensor", "Landscape");
}
orientation=1;
} else {
if (orientation!=0) {
Log.d("Sensor", "Portrait");
}
orientation=0;
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
}, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME);