2012-01-04 17 views
10

Tôi đang tìm kiếm ví dụ la bàn cho Android. Tất cả những gì tôi cần làm là lấy vòng bi chính xác (ở chế độ nằm ngang &).Ví dụ la bàn trên Android

Tôi đã tìm thấy một số mẫu, một số chỉ sử dụng Sensor.TYPE_ORIENTATION, một số sử dụng kết hợp của Sensor.TYPE_ACCELEROMETER & Sensor.TYPE_MAGNETIC_FIELD.

Cách nào là đúng & cách phổ biến để có được ổ đỡ cho chúng ta hãy nói Android 1.6 - 4.0?

Trả lời

19

Sensor.TYPE_ORIENTATION không được dùng nữa.

Tài liệu cho biết bạn nên sử dụng SensorManager.getOrientation() để thay thế.

Vì vậy, bạn nên đọc từ Sensor.TYPE_ACCELEROMETER cũng như từ Sensor.TYPE_MAGNETIC_FIELD và sau đó gọi SensorManager.getRotationMatrix() và cuối cùng là SensorManager.getOrientation() sẽ trả về hướng của điện thoại.

Từ đó nếu bạn thấy biểu đồ này thì không quan trọng để có được hướng của điện thoại. Đây có lẽ là ví dụ thứ hai của bạn, nhưng tôi không biết vì bạn không cho tôi biết nó là gì.

+4

Xin lỗi tôi quên đính kèm ví dụ: http://www.codingforandroid.com/2011/01/using-orientation-sensors-simple.html Vì vậy, đây là cách chính xác? – nr1

+0

Vâng, nội dung trong liên kết đó có vẻ đúng – Dan

+0

Rõ ràng cách bạn sử dụng dữ liệu tùy thuộc vào bạn, 'onSensorChanged' là nơi mà toán học thú vị là. – Dan

0

Sử dụng kết hợp phương pháp Sensor.TYPE_ACCELEROMETERSensor.TYPE_MAGNETIC_FIELDSensorManager.getOrientation() không cho tôi giá trị chính xác. Phương pháp không được chấp nhận Sensor.TYPE_ORIENTATION hoạt động tốt. :)

+3

Sửa mã của bạn sau đó. Mẫu mã có vẻ hoạt động tốt (http://www.codingforandroid.com/2011/01/using-orientation-sensors-simple.html kết hợp với nhận xét của gezdy) – Vaiden

+1

Hoặc có thể bạn cần phải hiệu chỉnh lại thiết bị của mình – Vaiden

5

Nhờ Dan cho mã mẫu của anh ấy.

Nhưng chỉ có chỉnh sửa nhỏ: thay đổi event.values thành event.values.clone() theo discussion này.
Nó hoạt động cho tôi ngay sau khi sửa đổi này.