Lớp trừu tượng phần cứng (HAL) là một loại lớp trừu tượng có giao diện tiêu chuẩn để các nhà cung cấp phần cứng triển khai. HAL cho phép các nhà cung cấp phần cứng triển khai các tính năng dành riêng cho thiết bị ở cấp thấp hơn mà không ảnh hưởng hoặc sửa đổi mã ở các lớp cấp cao hơn.
Các điều khoản bắt buộc
Sau đây là danh sách định nghĩa cho các thuật ngữ được dùng trong phần này của tài liệu:
- Ngôn ngữ định nghĩa giao diện Android (AIDL)
- Một ngôn ngữ tương tự như Java được dùng để xác định các giao diện theo cách độc lập với ngôn ngữ lập trình đang được dùng. AIDL cho phép giao tiếp giữa các ứng dụng HAL và dịch vụ HAL.
- HAL được liên kết
- Một HAL giao tiếp với các quy trình khác bằng cách sử dụng các lệnh gọi giao tiếp giữa các quy trình (IPC) của binder. HAL được liên kết chạy trong một quy trình riêng biệt với ứng dụng sử dụng chúng. Các HAL được liên kết được đăng ký với một trình quản lý dịch vụ để các ứng dụng có thể truy cập vào các chức năng của chúng. Các HAL được viết cho Android 8 trở lên sẽ được liên kết.
- Ứng dụng HAL
- Quy trình truy cập vào dịch vụ HAL.
- Giao diện HAL
- Giao diện chung mà cả ứng dụng và dịch vụ HAL đều dùng để giao tiếp.
- Dịch vụ HAL
Mã dành riêng cho phần cứng, chẳng hạn như mã giao tiếp với camera của thiết bị cụ thể. Bạn phải triển khai tất cả các HAL bắt buộc có trong ma trận tương thích cho bản phát hành mà bạn nhắm đến trong phân vùng nhà cung cấp. Để biết thêm thông tin về ma trận tương thích, hãy xem phần Ma trận tương thích.
Bạn cũng có thể tạo một giao diện HAL mới hoặc mở rộng giao diện của một HAL để hỗ trợ các chức năng riêng của phần cứng.
- Ngôn ngữ định nghĩa giao diện phần cứng (HIDL)
Một ngôn ngữ dùng để xác định các giao diện theo cách độc lập với ngôn ngữ lập trình đang được sử dụng. HIDL cho phép giao tiếp giữa các ứng dụng HAL và dịch vụ HAL.
- HAL quy trình tương tự (SP)
Một nhóm HAL được bao bọc có giới hạn. Google kiểm soát việc tham gia vào nhóm này. Các HAL SP bao gồm:
- HAL 5 của trình ánh xạ C ổn định
- OpenGL
- Vulkan
- android.hidl.memory@1.0 (do hệ thống Android cung cấp, luôn được bao bọc)
- android.hardware.renderscript@1.0
- HAL bao bọc
Một dịch vụ HAL được tạo trước Android 8, nhưng đã được gói trong một trình bao bọc AIDL hoặc HIDL để hoạt động với Android 8 trở lên.
Tiếp theo là gì?
- Để tìm hiểu cách triển khai một dịch vụ HAL, hãy tham khảo AIDL cho HAL.
- Để tìm hiểu cách tạo hoặc mở rộng HAL hiện có, hãy tham khảo Các giao diện mở rộng được đính kèm.