휴대 전화의 방향을 검색해야합니다.Android - SensorManager getOrientation의 이상한 동작
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()){
case Sensor.TYPE_MAGNETIC_FIELD:
this.mag_vals = event.values.clone();
this.sensorReady = true;
break;
case Sensor.TYPE_ACCELEROMETER:
this.acc_vals = event.values.clone();
break;
}
if (this.mag_vals != null && this.acc_vals != null && this.sensorReady) {
this.sensorReady = false;
float[] R = new float[ProjectConstants.SIZE_MATRIX];
float[] I = new float[ProjectConstants.SIZE_MATRIX];
SensorManager.getRotationMatrix(R, I, this.acc_vals, this.mag_vals);
SensorManager.getOrientation(R, this.actual_orientation);
...
이 코드는 내가 평평한 표면에 휴대폰을두고 내가 표면을 회전하는 경우 나 전화의 방향을 얻을 수 있습니다 : 순간 나는이를 썼다.
제가 이해가 안되는 이유는 전화가 위쪽으로 이동하면 this.actual_orientation[0]
값이 표시됩니다. [여기] [1]에서 설명한대로 zed 축의 회전은 회전이 없어도 값이 증가합니다.
누군가가 어떤 일이 발생했는지 알고 있었습니까?
편집 내가 직장에서 사무실에서 내 응용 프로그램을 시도하고 내가 같은 사무실에서 시도 내가 전에 설명하는 이상한 행동 .. (같은 상황이 있었다
또 다른 이상한 것은 ..) 나 시장에서 가져온 나침반 응용 프로그램과 내 같은 행동을했다. 내가 전화를 위쪽으로 이동했을 때 값이 일관되게 변했다. 나는 같은 사무실 (같은 상황)에서 i-phone 나침반을 시험해 보았다. 그 이상한 행동을하지 않았다! 내가 집에 도착했을 때
그럼 난 ... 모두가 내 응용 프로그램 내 안드로이드 폰의 나침반 응용 프로그램, 그들은 내가 값이 안정 위쪽으로 전화를 이동해도 !! 일
감사합니다 시도 제비.
[1] : http://developer.android.com/reference/android/hardware/SensorManager.html#getOrientation(float[]는