【Android】加速度センサーを利用した画面反転

どうも、開発部のSです。
最近、Androidの開発をする機会があって、
加速度センサーを使った画面反転処理を作成したので、紹介いたします。
 
 
//加速度センサーの利用
public class MainActivity extends Activity
    implements SensorEventListener {
    private SensorManager sensorManager;// センサーマネージャ
    private Sensor accelerometer;// 加速度せンサー
    private float[] values = new float[3];// 加速度と傾き値
 
 
    //初期化
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        // センサーマネージャの取得(1)
        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        // センサーの取得(2)
        List<Sensor> list;
        list = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);
        if (list.size() > 0)
            accelerometer = list.get(0);
 
    }
 
    //アプリの開始
    @Override
    protected void onResume() {
        //アプリの開始
        super.onResume();
 
        // センサーの処理の開始(3)
        if (accelerometer != null) {
            sensorManager.registerListener(this, accelerometer,
                    SensorManager.SENSOR_DELAY_FASTEST);
        }
    }
 
    //アプリの停止
    @Override
    protected void onStop() {
        //アプリの停止
        super.onStop();
 
        //センサーの処理の停止(4)
        sensorManager.unregisterListener(this);
    }
 
    //センサーリスナーの処理(5)
    public void onSensorChanged(SensorEvent event) {
        //加速度の取得
        if (event.sensor==accelerometer) {
            values[0]=event.values[0];
            values[1]=event.values[1];
            values[2]=event.values[2];
        }
        
        //加速度Yの値によって画面を反転させる。
        if (values[1] < 0.00){
            this.setRequestedOrientation(ActivityInfo.
                    SCREEN_ORIENTATION_REVERSE_PORTRAIT);
        }else{
            this.setRequestedOrientation(ActivityInfo.
                    SCREEN_ORIENTATION_SENSOR_PORTRAIT);
        }
    }
}
 
今回は画面を反転させる為に、加速度センサーを利用しましたが、
他にも照度センサーや近接センサーなども同じ書き方で
イベントを取得できるので、ハードの状態変化で処理を変えたい場合は、
センサーを利用すると解決するかもしれないですね。
 
以上、参考になれば幸いです。