Tôi cần lấy lại hướng của điện thoại. Tại thời điểm này tôi đã viết điều này:Android - SensorManager hành vi lạ của 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);
...
Mã này cho phép tôi định hướng điện thoại nếu tôi để điện thoại trên mặt phẳng và xoay nó trên bề mặt.
Điều tôi không hiểu là tại sao nếu tôi di chuyển điện thoại lên trên giá trị this.actual_orientation[0]
, là vòng xoay trên trục zed như được mô tả [ở đây] [1], giá trị tăng mặc dù không có xoay vòng.
Có ai đó biết điều gì sẽ xảy ra không?
EDIT
Một điều lạ ..
tôi đã cố gắng ứng dụng của tôi trong văn phòng tại nơi làm việc và nó đã có những hành vi kỳ lạ i được mô tả trước .. tôi đã cố gắng trong cùng một văn phòng (giống tình huống) một ứng dụng la bàn mà tôi lấy từ thị trường và nó có hành vi tương tự của tôi .. khi tôi di chuyển điện thoại trở lên giá trị thay đổi một cách nhất quán .. Tôi đã thử trong cùng một văn phòng (cùng một tình huống) la bàn i-phone và nó không có hành vi kỳ lạ đó!
Sau đó, khi tôi đến ở nhà tôi đã cố gắng cả hai, ứng dụng của tôi và các ứng dụng la bàn của điện thoại Android của tôi, và họ làm việc !! thậm chí nếu tôi di chuyển lên trên điện thoại giá trị ổn định ...
Cảm ơn nhiều.
[1]: http://developer.android.com/reference/android/hardware/SensorManager.html#getOrientation(float[], float [])