Android sensor framework sử dụng hệ tọa độ 3 chiều tiêu chuẩn (x,y,z) để thể hiện giá trị dữ liệu thu thập qua cảm biến, trong đó: trục x là trục ngang với giá trị bên phải, trục y là trục thẳng đứng với giá tị phía trên, trục z là trục ngoài khuôn màn hình. Hệ trục tọa độ có biểu diễn như sau:
Hình 3.12. Hệ trục tọa độ sử dụng bởi Android sensor API
Một số cảm biến sử dụng hệ trục tọa độ này để thu thập dữ liệu: Acceleration sensor, Gravity sensor, Gyroscope sensor, Linear acceleration sensor, Geomagnetic field sensor.
Chú ý:
- Hệ trục tọa độ này không thay đổi khi thiết bị di chuyển.
- Hệ tọa độ cảm biến luôn căn cứ trên định hướng tự nhiên của thiết bị, hầu hết các thiết bị có định hướng tự nhiên theo chiều ngang (landscape). - Sử dụng phương thức getRotation() để xác định chiều xoay của màn hình, remapCoordinateSystem() để chuyển hệ trục tọa độ cảm biến về hệ trục tọa độ màn hình.
Các thông tin thu được qua cảm biến chuyển động trên thiết bị được lưu trữ trong mảng số thực đa chiều của mỗi SensorEvent. Ví dụ khi sự kiện cảm biến gia tốc xuất hiện sẽ trả về dữ liệu lực gia tốc theo 3 chiều tọa độ.
Lấy về một thể hiện của cảm biến gia tốc
Về mặt khái niệm, gia tốc thiết bị thu được thông qua cảm biến gia tốc (Ad) đo được thông qua trọng lực lên cảm biến (Fs) như sau:
Ad = - ∑Fs / mass Tuy nhiên khi gia tốc thiết bị chịu ảnh hưởng của lực hấp dẫn thì:
Ad = -g - ∑F / mass
do, g= 0 m/s2. Do đó, để đo gia tốc thực của thiết bị, cần loại bỏ lực hấp dẫn khỏi dữ liệu gia tốc thu được, điều này được thực hiện bằng cách sử dụng một bộ lọc để cô lập các lực hấp dẫn. Minh họa dưới đây thực hiện điều này:
Lưu ý: có nhiều kỹ thuật khác nhau được sử dụng để lọc dữ liệu cảm biến. Đoạn code phía trên lọc dữ liệu cảm biến đơn giản thông qua hằng alpha = 0.8 minh họa.
Thu thập thông tin từ các cảm biến khác thuộc loại cảm biến chuyển động được thực hiện tương tự như cảm biến gia tốc. Thông tin chi tiết:
http://developer.android.com/guide/topics/sensors/sensors_motion.html#sensors- motion-accel