Tổng quan về lớp trừu tượng phần cứng (HAL)

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 để nhà cung cấp phần cứng triển khai. HAL cho phép 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ã trong 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 điều khoản được dùng trong phần tài liệu này:

Ngôn ngữ định nghĩa giao diện Android (AIDL)
Một ngôn ngữ giống Java được dùng để xác định 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 ứ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ác lệnh gọi giao tiếp liên 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. HAL được liên kết được đăng ký với một trình quản lý dịch vụ để ứng dụng có thể truy cập vào các chức năng của chúng. HAL được viết cho Android 8 trở lên đượ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 được cả ứng dụng và dịch vụ HAL 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ả HAL bắt buộc được liệt kê trong ma trận khả năng 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 khả năng tương thích, hãy xem Ma trận khả năng tương thích.

Bạn cũng có thể tạo giao diện HAL mới hoặc mở rộng giao diện của 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ữ được dùng để xác định giao diện theo cách độc lập với ngôn ngữ lập trình đang được dùng. HIDL cho phép giao tiếp giữa ứng dụng HAL và dịch vụ HAL.

HAL quy trình tương tự (SP)

Một nhóm HAL được gói hạn chế. Quyền thành viên trong nhóm do Google kiểm soát. HAL SP bao gồm:

  • HAL 5 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 gói)
  • android.hardware.renderscript@1.0
HAL được gói

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ì?