방향 센서를 이용하여 x,y,z의 TextView에 값이 변동되는 어플리케이션


사용하고자 하는 클래스에 implements SensorEventListener

1
2
3
4
5
private SensorManager mSensorManager;
private Sensor mOrientation;
 
mSensorManager = (SensorManager)getSystemService(Application.SENSOR_SERVICE);
mOrientation = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
cs

 

방향센서를 사용할 때 사용하는 코드

5번 줄대신 다른 메소드를 사용하지만 사용법을 익히지 않아 getDefaultSensor를 사용함


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    protected void onResume(){
        super.onResume();
        mSensorManager.registerListener(this,mOrientation,SensorManager.SENSOR_DELAY_UI);
}
 
    protected void onPause(){
        super.onPause();
        mSensorManager.unregisterListener(this);
}
 
    @Override
    public void onSensorChanged(SensorEvent event) {
        if(event.sensor.getType() ==  Sensor.TYPE_ORIENTATION){
            z.setText(String.valueOf(-event.values[0]) );
            x.setText(String.valueOf(event.values[1]));
            y.setText(String.valueOf(event.values[2]));
 
        }
    }
 
cs

 

 

어플리케이션을 사용하는 도중 다른 화면으로 넘어갔을 때도 방향 센서를 사용하고 있기 때문에 onPause에서 해지해준뒤

onResume에서 재 등록을 해주는 것


SensorEventListener 인터페이스를 implements하면 onSensorChanged와 onAccuracyChanged 메소드를 Override하게 되는데 onSensorChanged는 센서 값이 바뀌었을 때 불리는 메소드로 여러가지의 센서를 사용 할 경우 event.sensor.getType() == Sensor.사용하는 센서이름 을 비교하여 (또는 Switch~case 문으로) 각 센서에 맞는 행동을 한다.


app-debug (1).apk



+ Recent posts