tôi đang cố gắng để có được mang la bàn ở độ (tức là 0-360) sử dụng các phương pháp sau đây:Android Compass Mang
float[] mGravity;
float[] mGeomagnetic;
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
mGravity = event.values;
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
mGeomagnetic = event.values;
if (mGravity != null && mGeomagnetic != null) {
float R[] = new float[9];
float I[] = new float[9];
boolean success = SensorManager.getRotationMatrix(R, I, mGravity,
mGeomagnetic);
if (success) {
float orientation[] = new float[3];
SensorManager.getOrientation(R, orientation);
float azimut = orientation[0];
bearing.setText("Bearing: "+ azimut);
}
}
}
Giá trị góc phương vị (tức là orientation[0]
) phải là 0 < = góc phương vị < 360 nhưng Tôi chỉ nhận được giá trị từ -3 đến 3 khi tôi xoay thiết bị của mình. Ai đó có thể vui lòng cho tôi biết vấn đề có thể là gì không?
Thank you very much @Hoan Nguyễn – user1135357
hướng [0] dường như chỉ cung cấp sự khác biệt kể từ lần đọc cuối cùng. Tôi đã chuyển đổi giá trị của tôi thành độ nhưng giá trị vẫn còn rất nhỏ. Có cách nào để có được vòng bi thực sự của thiết bị (0 - 360 độ) trong một lần đọc không? –
Nó không phải là một sự khác biệt, nó là mang thực tế đối với phía bắc từ tính. Có gì đó sai với mã của bạn nếu đọc của bạn luôn là một giá trị nhỏ. –