![Biểu tượng HAL của cảm biến Android](https://source.android.google.cn/static/docs/core/interaction/sensors/images/ape_fwk_hal_sensors.png?authuser=0&hl=vi)
Cảm biến Android cho phép các ứng dụng truy cập vào cảm biến thực tế cơ bản của thiết bị di động. Đây là các thiết bị ảo cung cấp dữ liệu do sensors.h xác định, Lớp trừu tượng phần cứng (HAL) của cảm biến.
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: cảm biến gia tốc, con quay hồi chuyển, máy đo từ trường, khí áp kế, độ ẩm, áp suất, ánh sáng, cảm biến khoảng cách và nhịp tim.
Danh sách thiết bị thực cung cấp dữ liệu không bao gồm máy ảnh, 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 nhìn chung, cảm biến Android cung cấp dữ liệu băng thông thấp hơn. Ví dụ: "100hz x 3 kênh" cho gia tốc kế so với "25hz x 8 MP x 3 kênh" cho máy ảnh hoặc "44kHz x 1 kênh" cho micrô.
Android không xác định cách các cảm biến thực tế được kết nối với hệ thống trên chip (SoC).
- Thông thường, các khối cảm biến được kết nối với SoC thông qua một hub cảm biến, cho phép giám sát và xử lý một số dữ liệu ở mức tiêu thụ điện năng thấp.
- Thường thì, Vòng lặp tích hợp (I2C) hoặc Giao diện 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ó phân cấp, trong đó một số hoạt động 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 – như phát hiện chuyển động trên chip gia tốc kế) và nhiều hoạt động khác được thực hiện trong một vi điều khiển (như phát hiện bước trong một trung tâm cảm biến).
- Nhà sản xuất thiết bị có thể tuỳ ý chọn một cấu trúc dựa trên các đặc điểm về độ chính xác, công suất, giá và kích thước gói. Hãy xem phần Ngăn xếp 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á nguồn điện. Hãy xem phần Gộp nhóm để biết thêm thông tin.
Mỗi cảm biến Android có một "loại" đại diện cho 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 dưới tên SENSOR_TYPE_…
- Phần lớn cảm biến đều có loại cảm biến chính thức.
- Các loại đó được ghi lại trong SDK Android.
- Hành vi của các cảm biến có những loại đó được kiểm thử trong Bộ kiểm thử tính tương thích với Android (CTS).
- 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 loại cảm biến đó.
- Các loại đó không được ghi nhận, vì vậy, nhà phát triển ứng dụng có thể sẽ không sử dụng các loại đó, vì họ không biết hoặc biết rằng các loại đó 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).
- Các tính năng này không được CTS kiểm thử.
- Sau khi Android xác định loại cảm biến chính thức cho loại cảm biến này, nhà sản xuất phải ngừng sử dụng loại tạm thời của riêng họ và sử dụng loại chính thức. Bằng cách này, nhiều nhà phát triển ứng dụng sẽ sử dụng cảm biến này hơn.
- Danh sách tất 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 thuộc cùng một loại. Ví dụ: hai cảm biến khoảng cách hoặc hai gia tốc kế.
- Phần lớn các ứng dụng chỉ yêu cầu một cảm biến 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ặ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ả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 chứa:
- một handle đến cảm biến đã tạo ra sự kiện
- dấu thời gian tại thời điểm phát hiện hoặc đo lường sự kiện, dựa trên
SystemClock.elapsedRealtimeNanos()
- và một số dữ liệu
Cách 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 về 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 SDK
- Stack Overflow và các trang web hướng dẫn
- Vì tài liệu về cảm biến đôi khi còn thiếu, nên các nhà phát triển đã phải tìm đến các trang web hỏi đáp như Stack Overflow để tìm câu trả lời.
- Một số trang web hướng dẫn cũng tồn tại, nhưng không đề cập đến các tính năng mới nhất như tính năng tạo 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 những phần cần 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/+/main/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 sẽ được cập nhật khi các tính năng mới được phát triển.
- CDD của Android (Tài liệu định nghĩa về khả năng tương thích)
- /compatibility/android-cdd.pdf
- Xem các phần liên quan đến cảm biến.
- CDD có các yêu cầu khá dễ tính, vì vậy, việc đáp ứng các yêu cầu của CDD là chưa đủ để đảm bảo cảm biến có chất lượng cao.