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 các hằng số HAL công khai và các 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à nguyên hàm để tạo ra các đầu ra tương tự. Quá trình lập bản đồ được hỗ trợ bởi 2 mô hình mặc định khác nhau:

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

    • Biên độ là biến số 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.
    • Đây là mô hình tối thiểu cần thiết để triển khai UX xúc giác cơ bản.
    • Trải nghiệm người dùng xúc giác nâng cao đòi hỏi phần cứng nâng cao và một 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 tiên tiến. Nếu muốn sử dụng UX xúc giác nâng cao với VibrationEffect.Composition (để sử dụng hiệu quả nhất các API xúc giác mới nhất), thì các OEM nên triển khai phần cứng của họ bằng mô hình này.

Mô hình rời rạc

Bạn nên ánh xạ tất cả cá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 xem thiết bị có thể xác định bao nhiêu dạng sóng xúc giác với biên độ rời rạc trong HAL. Một câu hỏi cụ thể được xây dựng dựa trên khái niệm đó sẽ có dạng như sau: Tôi có thể xác định bao nhiêu hiệu ứng xúc giác xung đơn có 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 việc lập bản đồ.

Xác định các hằng số HAL là một quy trình phụ thuộc vào phần cứng. Ví dụ: một chiếc điện thoại cơ bản có thể chỉ có khả năng phần cứng để tạo ra một dạng sóng xúc giác duy nhất. Các thiết bị có thành phần phần cứng tiên tiến hơn tạo ra nhiều mức biên độ rời rạc hơn và có thể xác định nhiều dạng sóng xúc giác trong HAL. Hoạt động á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, đó là thời điểm ánh xạ các 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 3 nhóm riêng biệt gồm các mức biên độ. Cách phân đoạn hằng số API dựa trên các nguyên tắc UX cho các sự kiện đầu vào đi kèm. Để biết thêm thông tin, hãy xem bài viết Thiết kế trải nghiệm người dùng bằng phản hồi xúc giác.

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ợ 2 hằng số HAL có biên độ rời rạc, hãy cân nhắc việc hợp nhất các hằng số HAL có mức biên độ Trung bình và Cao. Ví dụ về khái niệm này trong thực tế là việc ánh xạ EFFECT_CLICKEFFECT_HEAVY_CLICK sang cùng một hằng số HAL, đó sẽ là hằng số HAL mức 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 việc hợp nhất cả 3 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 các 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 được chia tỷ lệ (HAL_H0 x S). Trong trường hợp này, HAL được chia tỷ lệ sẽ được ánh xạ để 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 với các kết cấu đặc 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). Các 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 kết cấu (HAL_H0) và tỷ lệ biên độ (S)

Mô hình liên tục để ánh xạ 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 biểu thị các kết cấu 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ề kết cấu (ví dụ: độ sắc nét) có 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 kết cấu và hệ số tỷ lệ (trong quy 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 thành 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 thể 2

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

Đối với tất 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). PRIMITIVE_TICKPRIMITIVE_CLICK có thể được thiết kế với sự phân 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 kết cấu.