Liên kết các hằng số giữa HAL và API

Trang này trình bày các mối liên kết được đề xuất giữa hằng số HAL công khai và hằng số API. Nếu phần cứng được đánh giá không triển khai các hằng số HAL, hãy cập nhật các mẫu dự phòng được mô tả trong trang Triển khai hằng số và dữ liệu gốc để tạo ra các kết quả tương tự. Việc liên kết được hỗ trợ bởi hai mô hình mặc định khác nhau:

  • Mô hình rời (đơn giản)

    • Độ biên là biến chính của mô hình này. Mỗi thực thể trong HAL đại diện cho một biên độ xúc giác khác nhau.
    • Mô hình này là yêu cầu tối thiểu cần thiết để triển khai trải nghiệm người dùng haptics cơ bản.
    • Để có trải nghiệm người dùng xúc giác nâng cao hơn, bạn cần có phần cứng nâng cao và mô hình nâng cao (mô hình liên tục).
  • Mô hình liên tục (nâng cao)

    • Kết cấu và biên độ là các biến chính của mô hình này. Mỗi thực thể trong HAL đại diện cho các kết cấu xúc giác khác nhau. Độ lớn của mỗi thực thể HAL được kiểm soát bằng hệ số tỷ lệ (S).
    • Mô hình này yêu cầu phần cứng nâng cao. Nếu nhà sản xuất thiết bị gốc (OEM) muốn sử dụng trải nghiệm người dùng haptics nâng cao với VibrationEffect.Composition (để sử dụng các API haptics mới nhất một cách hiệu quả nhất), bạn nên triển khai phần cứng của họ bằng cách sử dụng mô hình này.

Mô hình rời rạc

Bạn nên liên kết tất cả hằng số công khai được cung cấp trong API với các hằng số HAL thích hợp. Để bắt đầu quy trình này, hãy tìm hiểu số lượng sóng haptics có biên độ riêng biệt mà thiết bị có thể xác định trong HAL. Một câu hỏi cụ thể được xây dựng xung quanh khái niệm đó có dạng như sau: Tôi có thể xác định được bao nhiêu hiệu ứng xúc giác xung kích đơn với sự khác biệt về biên độ mà con người có thể cảm nhận được trong điện thoại của mình? Câu trả lời cho câu hỏi này sẽ xác định mối liên kết.

Việc xác định hằng số HAL là một quá trình phụ thuộc vào phần cứng. Ví dụ: điện thoại cấp thấp có thể chỉ có khả năng phần cứng để tạo một dạng sóng haptics duy nhất. Các thiết bị có thành phần phần cứng nâng cao hơn sẽ tạo ra phạm vi rộng hơn về các mức biên độ rời rạc và có thể xác định nhiều dạng sóng xúc giác trong HAL. Việc ánh xạ hằng số HAL-API sẽ lấy hằng số HAL (sử dụng biên độ trung bình làm đường cơ sở), sau đó sắp xếp các hiệu ứng mạnh hơn hoặc yếu hơn từ đó.

Sơ đồ về phạm vi hằng số HAL và biên độ phản hồi

Hình 14. Phạm vi hằng số HAL theo biên độ

Khi số lượng hằng số HAL có biên độ rời rạc được xác định, đã đến lúc ánh xạ hằng số HAL và API theo số lượng hằng số HAL. Quy trình ánh xạ này có thể phân đoạn một hằng số API xung duy nhất thành tối đa ba nhóm mức độ biên độ riêng biệt. Cách phân đoạn hằng số API dựa trên các nguyên tắc về trải nghiệm người dùng cho các sự kiện đầu vào đi kèm. Để biết thêm thông tin, hãy xem phần Thiết kế trải nghiệm người dùng haptics.

Mô hình rời rạc để ánh xạ hằng số HAL-API

Hình 15. Ánh xạ hằng số HAL-API: Mô hình rời rạc

Nếu thiết bị của bạn chỉ hỗ trợ hai hằng số HAL có biên độ riêng biệt, hãy cân nhắc hợp nhất các hằng số HAL cấp độ biên độ Trung bình và Cao. Ví dụ về khái niệm này trong thực tế là liên kết EFFECT_CLICKEFFECT_HEAVY_CLICK với cùng một hằng số HAL, đó sẽ là hằng số HAL cấp độ biên độ Trung bình. Nếu thiết bị của bạn chỉ hỗ trợ một hằng số HAL có biên độ rời rạc, hãy cân nhắc hợp nhất cả ba cấp độ thành một.

Mô hình liên tục

Bạn có thể áp dụng mô hình liên tục có khả năng mở rộng biên độ để xác định hằng số HAL. Bạn có thể áp dụng hệ số tỷ lệ (S) cho các hằng số HAL (ví dụ: HAL_H0, HAL_H1) để tạo HAL theo tỷ lệ (HAL_H0 x S). Trong trường hợp này, HAL theo tỷ lệ được liên kết để xác định các hằng số API (HAL_H0 x S1 = H0S1 = EFFECT_TICK) như minh hoạ trong hình 16. Bằng cách sử dụng khả năng mở rộng biên độ của mô hình liên tục, thiết bị có thể lưu trữ một số ít hằng số HAL có kết cấu riêng biệt và thêm các biến thể biên độ bằng cách điều chỉnh hệ số tỷ lệ (S). Nhà sản xuất thiết bị có thể xác định số lượng hằng số HAL dựa trên số lượng kết cấu xúc giác khác nhau mà họ muốn cung cấp.

Phạm vi hằng số HAL theo hoạ tiết và biên độ

Hình 16. Phạm vi hằng số HAL theo hoạ tiết (HAL_H0) và tỷ lệ biên độ (S)

Mô hình liên tục để liên kết hằng số HAL-API

Hình 17. Ánh xạ hằng số HAL-API: Mô hình liên tục

Trong mô hình liên tục, các hằng số HAL khác nhau đại diện cho các hiệu ứng xúc giác khác nhau thay vì các biên độ khác nhau; hệ số tỷ lệ (S) có thể định cấu hình biên độ. Tuy nhiên, vì cảm nhận về hoạ tiết (ví dụ: độ sắc nét) liên quan đến cảm nhận về thời lượng và biên độ, nên bạn nên kết hợp hoạ tiết và hệ số tỷ lệ (trong quá trình thiết kế ánh xạ HAL-API).

Hình 18 minh hoạ việc ánh xạ hằng số bằng cách tăng độ biến thiên từ một HAL đến nhiều hằng số API có khả năng mở rộng biên độ.

Tăng biến thể
1

Tăng độ biến thiên
2

Hình 18. Tăng độ biến thiên bằng khả năng mở rộng theo biên độ

Đối với tất cả các hằng số API có thể mở rộng như PRIMITIVE_TICKPRIMITIVE_CLICK trong VibrationEffect.Composition, mức năng lượng của hằng số API phụ thuộc vào tham số float scale khi hằng số API được khai báo thông qua addPrimitive(int primitiveID, float scale, int delay). Bạn có thể thiết kế PRIMITIVE_TICKPRIMITIVE_CLICK với sự khác biệt rõ ràng bằng cách sử dụng các hằng số HAL khác nhau. Bạn nên sử dụng phương pháp này nếu muốn thêm biến thể vào hiệu ứng kết cấu.