나침반 형태의 어플을 만들고 있는데 자꾸 오류가 나서 질문 드립니다.

SensorListener를 이용하여 방향을 알아 내는 것은 잘 됩니다.
문서를 보다보니 SensorListener이 디플리케이트 되었더군요.
해서 대신 사용할 인터페이스를 보니 SensorEventListener입니다.

SensorListener를 써서 방향각을 알아낼때 잘 나오는데 SensorEventListener는 값이 너무 적게 나와서 로그를 찍어보니 이상합니다.

SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

System.out.println(sensorManager.getDefaultSensor(SensorManager.SENSOR_ORIENTATION).getName());
System.out.println(sensorManager.getDefaultSensor(SensorManager.SENSOR_ACCELEROMETER).getName());
System.out.println(sensorManager.getDefaultSensor(SensorManager.SENSOR_MAGNETIC_FIELD).getName());

결과
BMA150 3-axis Accelerometer
AK8973 3-axis Magnetic field sensor
CM3602 Proximity sensor

나머지 필드로 뽑은 애들은 전부 null이 나오더군요...

보시면 아시겠지만. 상수 값이 잘못된건지 매핑이 틀리네요..

SENSOR_ORIENTATION -> BMA150 3-axis Accelerometer
SENSOR_ACCELEROMETER-> AK8973 3-axis Magnetic field sensor
SENSOR_MAGNETIC_FIELD-> CM3602 Proximity sensor

클래스 내부를 까서 확인해 보니 API문서와 동일하게 되어있는데..아래와 같이 정의 되어있습니다.
  // Field descriptor #8 I
  public static final int SENSOR_ORIENTATION = 1;
  
  // Field descriptor #8 I
  public static final int SENSOR_ACCELEROMETER = 2;
  
  // Field descriptor #8 I
  public static final int SENSOR_TEMPERATURE = 4;
  
  // Field descriptor #8 I
  public static final int SENSOR_MAGNETIC_FIELD = 8;

혹시 위의 문제를 격으신 분 계신지요??
참고로 디자이어폰에서 테스트 했습니다.