カテゴリー:
はじめてのAndroidプログラミング 改訂版
閲覧数:397 配信日:2018-06-13 10:56
P140 センサーの値をデバッグ出力する
センサーの値が更新された時に呼ばれる「onSensorChangedメソッド」を実装
・onSensorChanged(SensorEvent event)メソッド
▼L:\Android\AndroidStudioProject\FirstTimeAndroid\06\AccBall\app\src\main\java\work\w4c\android0\accball\MainActivity.java
package work.w4c.android0.accball;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.SurfaceHolder;
public class MainActivity extends AppCompatActivity
implements SensorEventListener, SurfaceHolder.Callback {
SensorManager mSensorManager;
Sensor mAccSensor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mAccSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { //SensorクラスのgetTypeメソッドを使って、送られてきた値が加速度センサーのものかどうかをチェックしている
//加速度センサーであれば、event.values配列からx軸、y軸、z軸それぞれの値を取得し、Logクラスのdメソッドでデバッグログを出力している
Log.d("MainActivity",
"x=" + String.valueOf(event.values[0]) +
"y=" + String.valueOf(event.values[1]) +
"z=" + String.valueOf(event.values[2]));
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this,mAccSensor,SensorManager.SENSOR_DELAY_GAME);
}
@Override
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
}