
Các cảm biến Android cho phép ứng dụng truy cập vào các cảm biến vật lý cơ bản của thiết bị di động. Đây là những thiết bị ảo cung cấp dữ liệu do sensors.h, Lớp trừu tượng phần cứng (HAL) của cảm biến xác định.
Cảm biến Android là gì?
Cảm biến Android là các thiết bị ảo cung cấp dữ liệu từ một nhóm cảm biến thực: gia tốc kế, con quay hồi chuyển, từ kế, khí áp kế, độ ẩm, áp suất, ánh sáng, cảm biến tiệm cận và cảm biến nhịp tim.
Không có trong danh sách các thiết bị thực cung cấp dữ liệu là camera, cảm biến vân tay, micrô và màn hình cảm ứng. Các thiết bị này có cơ chế báo cáo riêng; việc phân tách là tuỳ ý, nhưng nói chung, các cảm biến Android cung cấp dữ liệu có băng thông thấp hơn. Ví dụ: "100 Hz x 3 kênh" đối với một gia tốc kế so với "25 Hz x 8 MP x 3 kênh" đối với một camera hoặc "44 kHz x 1 kênh" đối với một micrô.
Android không xác định cách các cảm biến vật lý khác nhau được kết nối với hệ thống trên chip (SoC).
- Thông thường, các chip cảm biến được kết nối với SoC thông qua một trung tâm cảm biến, cho phép một số hoạt động giám sát và xử lý dữ liệu tiêu thụ ít điện năng.
- Thường thì Mạch tích hợp liên kết (I2C) hoặc Giao diện thiết bị ngoại vi nối tiếp (SPI) được dùng làm cơ chế truyền tải.
- Để giảm mức tiêu thụ điện năng, một số cấu trúc có tính phân cấp, với một số quy trình xử lý tối thiểu được thực hiện trong mạch tích hợp dành riêng cho ứng dụng (ASIC – chẳng hạn như tính năng phát hiện chuyển động trên chip gia tốc kế) và nhiều quy trình xử lý khác được thực hiện trong một vi điều khiển (chẳng hạn như tính năng phát hiện bước trong một trung tâm cảm biến).
- Nhà sản xuất thiết bị sẽ chọn một cấu trúc dựa trên các đặc điểm về độ chính xác, nguồn điện, giá cả và kích thước gói. Hãy xem phần Ngăn cảm biến để biết thêm thông tin.
- Khả năng xử lý hàng loạt là một yếu tố quan trọng cần cân nhắc để tối ưu hoá mức tiêu thụ điện. Hãy xem phần Xử lý theo lô để biết thêm thông tin.
Mỗi cảm biến Android đều có một "loại" biểu thị cách cảm biến hoạt động và dữ liệu mà cảm biến cung cấp.
- Các loại cảm biến chính thức của Android được xác định trong sensors.h theo tên SENSOR_TYPE_…
- Đa số cảm biến đều có một loại cảm biến chính thức.
- Những loại này được ghi lại trong Android SDK.
- Hành vi của các cảm biến thuộc những loại này được kiểm thử trong Bộ kiểm tra tính tương thích (CTS) của Android.
- Nếu tích hợp một loại cảm biến mới trên thiết bị Android, nhà sản xuất có thể xác định loại tạm thời riêng để tham chiếu đến cảm biến đó.
- Các loại này không được ghi lại, vì vậy, các nhà phát triển ứng dụng khó có thể sử dụng chúng, có thể là do họ không biết về chúng hoặc biết rằng chúng hiếm khi xuất hiện (chỉ trên một số thiết bị của nhà sản xuất cụ thể này).
- CTS không kiểm thử các API này.
- Sau khi Android xác định một loại cảm biến chính thức cho loại cảm biến này, các nhà sản xuất phải ngừng sử dụng loại tạm thời của riêng họ và thay vào đó sử dụng loại chính thức. Nhờ đó, cảm biến sẽ được nhiều nhà phát triển ứng dụng sử dụng hơn.
- Danh sách tất cả các cảm biến có trên thiết bị được báo cáo bằng cách triển khai HAL.
- Có thể có nhiều cảm biến cùng loại. Ví dụ: 2 cảm biến tiệm cận hoặc 2 gia tốc kế.
- Phần lớn các ứng dụng chỉ yêu cầu một cảm biến duy nhất thuộc một loại nhất định. Ví dụ: một ứng dụng yêu cầu gia tốc kế mặc định sẽ nhận được gia tốc kế đầu tiên trong danh sách.
- Các cảm biến thường được xác định theo các cặp đánh thức và không đánh thức, cả hai cảm biến đều có cùng một loại, nhưng khác nhau về đặc điểm đánh thức.
Các cảm biến Android cung cấp dữ liệu dưới dạng một loạt sự kiện cảm biến.
Mỗi sự kiện đều chứa:
- một tay cầm cho cảm biến đã tạo ra nó
- dấu thời gian mà tại đó sự kiện được phát hiện hoặc đo lường, dựa trên
SystemClock.elapsedRealtimeNanos()
- và một số dữ liệu
Việc diễn giải dữ liệu được báo cáo phụ thuộc vào loại cảm biến. Hãy xem định nghĩa loại cảm biến để biết thông tin chi tiết về dữ liệu được báo cáo cho từng loại cảm biến.
Tài liệu hiện có
Nhắm đến nhà phát triển
- Tổng quan
- Tài liệu tham khảo về SDK
- Stack Overflow và các trang web hướng dẫn
- Vì tài liệu về cảm biến đôi khi không đầy đủ, nên các nhà phát triển đã phải dùng đến các trang web hỏi và đáp như Stack Overflow để tìm câu trả lời.
- Ngoài ra, cũng có một số trang web hướng dẫn, nhưng không đề cập đến các tính năng mới nhất như tính năng phân lô, chuyển động đáng kể và vectơ xoay trò chơi.
- Các câu trả lời ở đó không phải lúc nào cũng đúng và cho biết nơi cần có thêm tài liệu.
Nhắm đến nhà sản xuất
- Tổng quan
- Trang Cảm biến này và các trang con của trang này.
- Lớp trừu tượng phần cứng (HAL)
- /platform/hardware/libhardware/+/android16-release/include/hardware/sensors.h
- Còn được gọi là "sensors.h"
- Nguồn đáng tin cậy. Tài liệu đầu tiên được cập nhật khi các tính năng mới được phát triển.
- CDD (Tài liệu định nghĩa khả năng tương thích) của Android
- /compatibility/android-cdd.pdf
- Xem các phần liên quan đến cảm biến.
- CDD khá linh hoạt, nên việc đáp ứng các yêu cầu của CDD là không đủ để đảm bảo các cảm biến có chất lượng cao.