Triển khai hằng số và dữ liệu gốc

Các hằng số và nguyên hàm xúc giác được xác định bởi HAL của bộ rung và được khung Android liên kết với các API công khai. Hãy thực hiện các bước kiểm tra sau đây để xác định xem thiết bị của bạn có đáp ứng các yêu cầu tối thiểu để triển khai tính năng phản hồi xúc giác hay không:

Lưu đồ quy trình triển khai tính năng phản hồi xúc giác

Hình 2. Triển khai hiệu ứng

Sơ đồ quy trình các bước triển khai các đối tượng gốc

Hình 3. Triển khai dữ liệu gốc

Triển khai hằng số

Các nhà phát triển có thể sử dụng hằng số xúc giác trong VibrationEffect thông qua VibrationEffect.createPredefined(). Hãy kiểm tra trạng thái triển khai của các hằng số xúc giác sau.

Hằng số xúc giác Vị trí và bản tóm tắt
EFFECT_TICK, EFFECT_CLICK, EFFECT_HEAVY_CLICK, EFFECT_DOUBLE_CLICK Lớp VibrationEffect
Hằng số xúc giác trong VibrationEffect không bao gồm bất kỳ khái niệm nào về sự kiện đầu vào và không có phần tử giao diện người dùng. Các hằng số bao gồm khái niệm về mức năng lượng, chẳng hạn như EFFECT_CLICKEFFECT_HEAVY_CLICK, được gọi bởi createPredefined().

Các chế độ rung thay thế được mô tả tiếp theo được thực hiện trên các thiết bị không triển khai hằng số VibrationEffect. Bạn nên cập nhật các cấu hình này để đạt được hiệu suất tốt nhất trên các thiết bị như vậy.

  • EFFECT_CLICK

    Độ rung dạng sóng được tạo bằng VibrationEffect.createWaveform và thời gian được định cấu hình tại frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern.

  • EFFECT_HEAVY_CLICK

    Độ rung dạng sóng được tạo bằng VibrationEffect.createWaveform và thời gian được định cấu hình tại frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern.

    • EFFECT_DOUBLE_CLICK

    Độ rung dạng sóng được tạo bằng VibrationEffect.createWaveform và thời gian (0, 30, 100, 30).

  • EFFECT_TICK

    Độ rung dạng sóng được tạo bằng VibrationEffect.createWaveform và thời gian được định cấu hình tại frameworks/base/core/res/res/values/config.xml##config_clockTickVibePattern.

Sơ đồ quy trình các bước kiểm thử phản hồi xúc giác

Hình 4. Triển khai hằng số phản hồi

Nhà phát triển có thể sử dụng các hằng số xúc giác trong HapticFeedbackConstants thông qua View.performHapticFeedback()). Hãy kiểm tra trạng thái của các hằng số phản hồi công khai sau.

Hằng số xúc giác Vị trí và bản tóm tắt
CLOCK_TICK, CONTEXT_CLICK, KEYBOARD_PRESS, KEYBOARD_RELEASE, KEYBOARD_TAP, LONG_PRESS, TEXT_HANDLE_MOVE, VIRTUAL_KEY, VIRTUAL_KEY_RELEASE, CONFIRM, REJECT, GESTURE_START, GESTURE_END Lớp HapticFeedbackConstants
Hằng số xúc giác trong HapticFeedbackConstants hỗ trợ các sự kiện đầu vào bằng một số thành phần giao diện người dùng nhất định, chẳng hạn như KEYBOARD_PRESSKEYBOARD_RELEASE, được gọi bởi performHapticFeedback().

Triển khai các dữ liệu gốc

Các nguyên hàm xúc giác trong VibrationEffect.Composition có cường độ có thể mở rộng mà nhà phát triển có thể sử dụng thông qua addPrimitive(int primitiveId, float scale, int delay). Các đối tượng gốc có thể được chia thành hai loại:

  • Đơn vị gốc ngắn: Đơn vị gốc có thời lượng ngắn, thường dưới 20 ms. Đó là CLICK, TICKLOW_TICK.

  • Tính năng gốc chirp: Các tính năng gốc có biên độ và tần số khác nhau, thường có thời lượng dài hơn các tính năng gốc ngắn. Đó là SLOW_RISE, QUICK_RISE, QUCK_FALL, THUDSPIN.

Nguyên hàm ngắn

Bạn có thể mô tả các nguyên hàm ngắn bằng hồ sơ gia tốc đầu ra của động cơ rung. Tần số tuyệt đối được sử dụng thay đổi tuỳ theo mỗi đối tượng gốc, tuỳ thuộc vào tần số cộng hưởng của bộ truyền động. Hãy xem phần Thiết lập thiết bị kiểm thử để biết thêm thông tin về cách thiết lập phần cứng và công cụ đo lường đầu ra.

Một chỉ số chất lượng có giá trị đối với các rung động ngắn là tỷ lệ xung/đổ chuông (PRR), như trong Hình 5. PRR được xác định là tỷ lệ giữa điện xung chính, do tín hiệu bên trong cửa sổ thời lượng xác định, trong đó biên độ giảm xuống còn 10% biên độ đỉnh và điện xung vòng, do tín hiệu xác định, trong đó biên độ giảm từ 10% biên độ đỉnh xuống dưới 1% biên độ đỉnh. Công thức tính PRR là:

$$ \text{Pulse to ring ratio (PRR)} = 20log_{10}\frac{\text{RMS (main pulse)}}{\text{RMS (ring)}} $$

Để biết thêm thông tin về PRR, hãy xem bài viết Phân tích dạng sóng. Để biết thêm thông tin về cách phân tích và so sánh kết quả, hãy xem bài viết So sánh kết quả bằng bản đồ hiệu suất.

Tỷ lệ xung nhịp với chuông

Hình 5. Định nghĩa về tỷ lệ xung nhịp/đổ chuông

Áp dụng các đối tượng gốc ngắn làm phản hồi đầu vào của người dùng hoặc phát trong các thành phần dài hơn để tạo hoạ tiết mềm. Điều này có nghĩa là các hiệu ứng này thường được kích hoạt thường xuyên và phát liên tiếp nhanh chóng. Cường độ cảm nhận được của một nguyên mẫu ngắn có thể kết hợp với cường độ hiệu ứng lớn hơn. Vì lý do này, hãy điều chỉnh một kim đánh dấu nhịp độ khung hình hoặc kim đánh dấu nhịp độ khung hình thấp nguyên gốc bằng một thành phần lớn hơn, ví dụ: 100 kim đánh dấu nhịp độ khung hình liên tiếp.

Loại dữ liệu gốc của lượt nhấp

Lớp gốc của âm thanh nhấp chuột là một hiệu ứng mạnh mẽ, sắc nét thường hoạt động gần với tần số cộng hưởng của thiết bị để đạt được đầu ra tối đa trong một khoảng thời gian ngắn. Nó mạnh và sâu hơn các đối tượng gốc khác, hoạt động ở cường độ tối đa.

Nếu có, hãy sử dụng chế độ tăng tốc động cơ ở đầu và chế độ phanh chủ động ở cuối để đạt được thời gian tăng và giảm động cơ ngắn. Đối với một số động cơ, việc sử dụng sóng vuông thay vì sóng sin có thể giúp tăng tốc nhanh hơn. Hình 6 cho thấy một hồ sơ tăng tốc đầu ra mẫu cho nguyên hàm nhấp:

Nhấp vào hồ sơ tăng tốc đầu ra gốc

Hình 6. Ví dụ về hồ sơ tăng tốc đầu ra cho thao tác nhấp gốc

Thông số Nguyên tắc
Thời lượng

Mục tiêu: 12 mili giây

Giới hạn: < 30 mili giây

Gia tốc đầu ra cực đại

Mục tiêu: 2 G

Giới hạn: > 1 GB

Tần suất sao lưu Gần bằng tần số cộng hưởng

Dấu đánh dấu gốc (dấu đánh dấu sáng)

Dấu kiểm nguyên thuỷ là một hiệu ứng ngắn, sắc nét thường hoạt động ở phạm vi tần số cao hơn. Kiểu gốc này cũng có thể được mô tả là một lượt nhấp có cường độ trung bình ở tần suất cao hơn với đuôi ngắn. Hướng dẫn tương tự cũng áp dụng để đạt được thời gian tăng ngắn bằng cách sử dụng chế độ tăng tốc động cơ hoặc sóng vuông cho thời điểm bắt đầu ban đầu và phanh chủ động ở độ dời. Hình 7 cho thấy một hồ sơ tăng tốc đầu ra mẫu cho dấu thời gian gốc:

Đánh dấu hồ sơ tăng tốc đầu ra gốc

Hình 7. Ví dụ về hồ sơ tăng tốc đầu ra cho tick nguyên thuỷ

Thông số Nguyên tắc
Thời lượng

Mục tiêu: 5 mili giây

Giới hạn: < 20 ms

Gia tốc đầu ra cực đại

Mục tiêu: Một nửa CLICK, 1 G

Giới hạn: Từ 0,5 GB đến 1 GB

Tần suất sao lưu

Mục tiêu: 2x tần số cộng hưởng

Giới hạn: < 500 Hz

Dấu kiểm thấp

Kiểu gốc tick thấp là phiên bản tick sáng nhẹ nhàng và yếu hơn, hoạt động ở phạm vi tần số thấp hơn để mang lại hiệu ứng rõ ràng hơn. Kiểu gốc này cũng có thể được mô tả là một lượt nhấp có cường độ trung bình ở tần suất thấp hơn, nhằm mục đích sử dụng lặp lại cho phản hồi động. Hướng dẫn tương tự cũng áp dụng để đạt được thời gian tăng ngắn bằng cách sử dụng chế độ tăng tốc động cơ hoặc sóng vuông cho thời điểm bắt đầu ban đầu. Hình 8 cho thấy một hồ sơ tăng tốc đầu ra mẫu cho nguyên hàm kim đánh dấu nhịp độ khung hình thấp:

Hồ sơ tăng tốc đầu ra nguyên gốc có độ trễ thấp

Hình 8. Ví dụ về hồ sơ gia tốc đầu ra cho giá trị gốc có tốc độ đánh dấu thấp

Thông số Nguyên tắc
Thời lượng

Mục tiêu: 12 mili giây

Giới hạn: < 30 mili giây

Gia tốc đầu ra cực đại

Mục tiêu: 1/4 TICK, 0,25 G

Giới hạn: Từ 0,2 GB đến 0,5 GB

Tần suất sao lưu

Mục tiêu: 2/3 tần số cộng hưởng

Giới hạn: < 100 Hz

Các nguyên hàm Chirp

Các tín hiệu gốc của tiếng rít có thể được mô tả bằng tín hiệu đầu vào cho mức điện áp và tần số rung. Gia tốc mà động cơ có thể xuất ra ở các dải tần số khác nhau sẽ thay đổi tuỳ thuộc vào đường cong đáp ứng tần số của bộ truyền động. Bạn cần điều chỉnh dải tần số và mức điện áp trên cơ sở từng thiết bị.

Hàm tăng chậm

Tăng chậm là độ biên và tần số quét lên từ từ với thời gian bắt đầu nhẹ nhàng và cường độ rung tăng lên liên tục trong quá trình quét. Bạn có thể triển khai bằng cách quét nhất quán cả biên độ và tần số, sử dụng một dải tần số thấp hơn hoạt động ngoài cộng hưởng. Hình 9 cho thấy các tham số đầu vào và hồ sơ tăng tốc đầu ra mẫu cho cách triển khai này. (Đường màu đỏ khớp với nhãn biên độ ở bên trái và thể hiện cách biên độ dao động thay đổi theo thời gian. Đường màu xanh dương khớp với nhãn tần số ở bên phải và thể hiện tần số dao động thay đổi theo thời gian.)

Tham số đầu vào và hồ sơ gia tốc đầu ra cho nguyên hàm tăng chậm

Hình 9. Tham số đầu vào và ví dụ về hồ sơ tăng tốc đầu ra cho nguyên hàm tăng chậm

Nếu đáp ứng tần số của động cơ bị hạn chế (không đủ mạnh ở tần số cộng hưởng), thì phương thức triển khai thay thế là quét sin từ 1/2x đến 1x tần số cộng hưởng. Sự cộng hưởng của động cơ góp phần đạt đến đỉnh tín hiệu ở cuối.

Thông số Nguyên tắc
Thời lượng

Mục tiêu: 500 mili giây

Dung sai: 20 ms

Gia tốc đầu ra cực đại

Mục tiêu: 0,5 G

Giới hạn: Từ 0,5 GB đến 1 GB

Tần suất sao lưu

Mục tiêu: 1/2 đến 2/3 tần số cộng hưởng

Phương án thay thế: 1/2 đến tần số cộng hưởng

Phần tử gốc tăng nhanh

Sự tăng nhanh là một biên độ và tần số quét lên nhanh hơn với sự khởi đầu nhẹ nhàng và cường độ rung tăng lên liên tục trong quá trình quét. Mục tiêu tần số rung và gia tốc đầu ra phải giống với mục tiêu tăng chậm, đạt được trong thời lượng ngắn hơn. Hình 10 cho thấy các tham số đầu vào rung và hồ sơ gia tốc đầu ra mẫu cho nguyên hàm tăng chậm. (Đường màu đỏ khớp với nhãn biên độ ở bên trái và thể hiện cách biên độ dao động thay đổi theo thời gian. Đường màu xanh dương khớp với nhãn tần số ở bên phải và thể hiện tần số dao động thay đổi theo thời gian.)

Tham số đầu vào và hồ sơ gia tốc đầu ra cho nguyên hàm tăng nhanh

Hình 10. Thông số đầu vào và ví dụ về hồ sơ tăng tốc đầu ra cho nguyên hàm tăng nhanh

Thông số Nguyên tắc
Thời lượng

Mục tiêu: 150 mili giây

Dung sai: 20 ms

Gia tốc đầu ra cực đại

Mục tiêu: Tương tự như SLOW_RISE

Giới hạn: Tương tự như SLOW_RISE

Tần suất sao lưu

Mục tiêu: Tương tự như SLOW_RISE

Phương án thay thế: Tương tự như SLOW_RISE

Nguyên hàm rơi nhanh

Sự giảm nhanh là một biên độ và tần số quét xuống nhanh với thời điểm bắt đầu âm thanh nhẹ nhàng. Bạn có thể sử dụng tần số cao hơn làm điểm bắt đầu trong khi động cơ đang tăng tốc để đạt được gia tốc đầu ra cực đại. Tần số phải giảm liên tục trong quá trình quét, ngay cả trong thời gian tăng. Hình 11 cho thấy các tham số đầu vào và hồ sơ tăng tốc đầu ra mẫu cho quá trình triển khai này. (Đường màu đỏ khớp với nhãn biên độ ở bên trái và thể hiện cách biên độ dao động thay đổi theo thời gian. Đường màu xanh dương khớp với nhãn tần số ở bên phải và thể hiện tần số dao động thay đổi theo thời gian.)

Tham số đầu vào và hồ sơ gia tốc đầu ra cho nguyên mẫu rơi nhanh

Hình 11. Tham số đầu vào và ví dụ về hồ sơ tăng tốc đầu ra cho nguyên mẫu rơi nhanh

Thông số Nguyên tắc
Thời lượng

Mục tiêu: 100 mili giây

Dung sai: 20 ms

Gia tốc đầu ra cực đại

Mục tiêu: 1 GB

Giới hạn: Từ 0,5 G đến 2 G

Tần suất sao lưu

Mục tiêu: 2x đến 1x tần số cộng hưởng

Thud nguyên thuỷ

Tiếng ầm là một hiệu ứng âm thanh gõ, thấp, bộ gõ mô phỏng cảm giác thực tế khi gõ vào gỗ rỗng. Kiểu gốc này hoạt động trong phạm vi tần số thấp, tương tự như kiểu gốc tick thấp, để cung cấp thêm nội dung cho hiệu ứng. Bạn có thể triển khai âm thanh thud nguyên thuỷ dưới dạng một biên độ và tần số quét xuống ở một dải tần số thấp hơn (tốt nhất là dưới 100 Hz). Hình 12 cho thấy các tham số đầu vào và hồ sơ tăng tốc đầu ra mẫu cho quá trình triển khai này. (Đường màu đỏ khớp với nhãn biên độ ở bên trái và thể hiện cách biên độ dao động thay đổi theo thời gian. Đường màu xanh dương khớp với nhãn tần số ở bên phải và thể hiện tần số dao động thay đổi theo thời gian.)

Tham số đầu vào và hồ sơ tăng tốc đầu ra cho nguyên hàm thud

Hình 12. Tham số đầu vào và ví dụ về hồ sơ tăng tốc đầu ra cho nguyên hàm âm thanh

Nếu đáp ứng tần số của động cơ bị giới hạn, thì một phương thức triển khai thay thế là bắt đầu bằng tín hiệu truyền động cường độ đầy đủ ở tần số cộng hưởng và giảm xuống tần số thấp nhất có thể vẫn có thể nhận biết được. Phương pháp này có thể yêu cầu tăng cường độ tín hiệu truyền động ở tần số thấp hơn để cảm nhận được độ rung.

Thông số Nguyên tắc
Thời lượng

Mục tiêu: 300 mili giây

Dung sai: 20 ms

Gia tốc đầu ra cực đại

Mục tiêu: 0,25 G

Giới hạn: Từ 0,2 GB đến 0,5 GB

Tần suất sao lưu

Mục tiêu: 1/2 đến 1/3 tần số cộng hưởng

Phương án thay thế: 1x đến 1/2 tần số cộng hưởng

Phần tử gốc Spin

Hiệu ứng xoay mô phỏng động lượng xoay của vòng quay lên và xuống nhanh với một điểm nhấn nhẹ ở giữa. Bạn có thể triển khai hiệu ứng xoay bằng cách quét biên độ và tần số một cách độc lập, theo hướng ngược lại và theo sau là chuyển động đảo ngược. Điều quan trọng là bạn phải sử dụng phạm vi tần số thấp hơn (tốt nhất là dưới 100 Hz). Hình 13 cho thấy các tham số đầu vào và hồ sơ tăng tốc đầu ra mẫu cho quá trình triển khai này. (Đường màu đỏ khớp với nhãn biên độ ở bên trái và thể hiện cách biên độ dao động thay đổi theo thời gian. Đường màu xanh dương khớp với nhãn tần số ở bên phải và thể hiện tần số dao động thay đổi theo thời gian.)

Bạn nên gọi nguyên hàm xoay hai lần liên tiếp hoặc ba lần trong các thành phần để tạo cảm giác xoay và không ổn định.

Nếu đáp ứng tần số của động cơ bị hạn chế, thì một phương thức triển khai thay thế là quét sin nhanh từ 1/2x đến 1x tần số cộng hưởng và quay lại. Độ cộng hưởng của động cơ tự động tạo ra một điểm nhấn ở giữa tín hiệu.

Tham số đầu vào và hồ sơ tăng tốc đầu ra cho nguyên hàm xoay

Hình 13. Tham số đầu vào và ví dụ về hồ sơ tăng tốc đầu ra cho nguyên hàm xoay

Thông số Nguyên tắc
Thời lượng

Mục tiêu: 150 mili giây

Dung sai: 20 ms

Gia tốc đầu ra cực đại

Mục tiêu: 0,5 G

Giới hạn: Từ 0,25 G đến 0,75 G

Tần suất sao lưu

Mục tiêu: 2/3 đến 1/3, sau đó quay lại 1/2 tần số cộng hưởng

Phương án thay thế: 2/3 đến 1x, sau đó quay lại 1/2 tần số cộng hưởng