androidアプリの画面の向きを横向きのみで縦に回転させたくないときには、
AndroidManifest.xml内にて
AndroidManifest.xml
<activity android:screenOrientation="sensorLandscape">
のように記述すると実現出来ます。
また、画面回転時のイベントを受け取るためには、
AndroidManifest.xml
<activity configChanges="orientation|keyboardHidden|screenSize">
このように記述します。
(screenSizeはandroid3.2以上用)
しかし上記のように記述しても、
一部の端末で画面を回転させた時に、
ActivityのonConfigurationChangedイベントが呼ばれないことがありました。
そのため、代替手段として以下のメソッドを実装してイベントを取得しました。
SampleActivity.java
public class SampleActivity extends Activity implements SensorEventListener
{
private int mRotation;
private SensorManager mSensorManager;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_NORMAL);
}
public void onSensorChanged(SensorEvent event) {
int rotation = getWindowManager().getDefaultDisplay().getRotation();
if (mRotation != rotation) {
// 画面が回転した!
}
}
}