【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);
}
}
}
今回は画面を反転させる為に、加速度センサーを利用しましたが、
他にも照度センサーや近接センサーなども同じ書き方で
イベントを取得できるので、 ハードの状態変化で処理を変えたい場合は、
センサーを利用すると解決するかもしれないですね。
以上、参考になれば幸いです。