public class MyView extends View implements SensorEventListener {
Paint textP; // 화면에 텍스트 출력하기 위한 객체
int heading, pitch, rolling; // 헤딩, 피치, 롤링
public MyView(Context context) {
super(context);
// 시스템으로부터 센서 매니저 객체 얻어오기
SensorManager sManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);
// 센서 리스너 객체, 센서 타입, 센서 민감도를 sManager에 등록하기
sManager.registerListener(this, sManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_GAME); // this: 센서 리스너객체
// 화면에 텍스트 출력
textP = new Paint();
textP.setTextSize(30);
textP.setColor(Color.YELLOW);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
// 헤딩, 피치, 롤링 값 출력
canvas.drawColor(Color.CYAN);
canvas.drawText("Heading: " + heading, 5, 30, textP);
canvas.drawText("Pitch: " + pitch, 10, 60, textP);
canvas.drawText("Rolling: " + rolling, 15, 90, textP);
}
// 쓸 일 없음, 지원 안됨
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
// 센서값의 변화를 감지해 호출되는 메서드
@Override
public void onSensorChanged(SensorEvent event) {
switch(event.sensor.getType()) {
case Sensor.TYPE_ORIENTATION: // 방향센서 값 감지했을 때
heading = (int)event.values[0]; // 헤딩
pitch = (int)event.values[1]; // 피치
rolling = (int) event.values[2]; // 롤링
invalidate(); // 화면 갱신하기
break;
}
}
}
RECENT COMMENT