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;
		
		}
	}	
}
posted by 쪼재