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

Các hằng số và cấu trúc cơ bản xúc giác được xác định bởi HAL bộ rung và được khung Android ánh xạ đến các API công khai. Hãy thực hiện các bước kiểm tra nà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 xúc giác hay không:

Lưu đồ quy trình triển khai xúc giác

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

Lưu đồ các bước triển khai các thành phần cơ bản

Hình 3. Triển khai cấu trúc cơ bản

Triển khai hằng số

Nhà phát triển có thể sử dụng các 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 đây.

Hằng số xúc giác Vị trí và nội dung tóm tắt
EFFECT_TICK, EFFECT_CLICK, EFFECT_HEAVY_CLICK, EFFECT_DOUBLE_CLICK VibrationEffect lớp
Các 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ử nào trên giao diện người dùng. Thay vào đó, 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 sẽ đượ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 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.

Lưu đồ 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 đây.

Hằng số xúc giác Vị trí và nội dung 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 HapticFeedbackConstants lớp
Các hằng số xúc giác trong HapticFeedbackConstants hỗ trợ các sự kiện đầu vào bằng một số phần tử trên giao diện người dùng, chẳng hạn như KEYBOARD_PRESSKEYBOARD_RELEASE, được gọi bởi performHapticFeedback().

Triển khai cấu trúc cơ bản

Các cấu trúc cơ bản xúc giác trong VibrationEffect.Composition có cường độ có thể điều chỉnh mà nhà phát triển có thể sử dụng thông qua addPrimitive(int primitiveId, float scale, int delay). Bạn có thể chia các cấu trúc cơ bản thành 2 danh mục:

  • Cấu trúc cơ bản ngắn: Cấu trúc cơ bản có thời lượng ngắn, thường dưới 20 ms. Các cấu trúc này là CLICK, TICKLOW_TICK.

  • Cấu trúc cơ bản chiêm chiếp: Cấu trúc cơ bản có biên độ và tần suất khác nhau, thường có thời lượng dài hơn cấu trúc cơ bản ngắn. Các cấu trúc này là SLOW_RISE, QUICK_RISE, QUCK_FALL, THUDSPIN.

Cấu trúc cơ bản ngắn

Bạn có thể mô tả cấu trúc cơ bản ngắn bằng hồ sơ tăng tốc đầu ra của động cơ bộ rung. Tần suất tuyệt đối được sử dụng sẽ khác nhau đối với từng cấu trúc cơ bản, tuỳ thuộc vào tần suất cộng hưởng của bộ truyền động. Hãy xem 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ác công cụ đo lường đầu ra.

Một chỉ số chất lượng có giá trị cho các chế độ rung ngắn là tỷ lệ xung so với vòng (PRR), như trong Hình 5. PRR được định nghĩa là tỷ lệ giữa xung chính, được xác định bằng tín hiệu bên trong cửa sổ thời lượng mà biên độ giảm xuống 10% biên độ đỉnh) và xung vòng, được xác định bằng tín hiệu mà 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 Phân tích dạng sóng và để biết thêm thông tin về cách phân tích và so sánh kết quả, hãy xem So sánh kết quả bằng bản đồ hiệu suất.

Tỷ lệ xung đến vòng

Hình 5. Định nghĩa về tỷ lệ xung so với vòng

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

Cấu trúc cơ bản nhấp

Cấu trúc cơ bản nhấp là một hiệu ứng mạnh mẽ, rõ ràng, thường hoạt động gần với tần suất cộng hưởng của thiết bị để đạt được đầu ra tối đa trong thời gian ngắn. Cấu trúc này mạnh mẽ và sâu hơn các cấu trúc cơ bản 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à 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 ví dụ về hồ sơ tăng tốc đầu ra cho cấu trúc cơ bản nhấp:

Hồ sơ tăng tốc đầu ra cơ bản khi nhấp

Hình 6. Ví dụ về hồ sơ tăng tốc đầu ra cho cấu trúc cơ bản nhấp

Tham số Hướng dẫn
Thời lượng

Mục tiêu: 12 ms

Giới hạn: < 30 ms

Tăng tốc đầu ra đỉnh

Mục tiêu: 2 G

Giới hạn: > 1 G

Tần suất Gần bằng tần suất cộng hưởng

Cấu trúc cơ bản đánh dấu (đánh dấu nhẹ)

Cấu trúc cơ bản đánh dấu là một hiệu ứng sắc nét, ngắn, thường hoạt động ở dải tần số cao hơn. Bạn cũng có thể mô tả cấu trúc cơ bản này là một lần nhấp có cường độ trung bình ở tần suất cao hơn với một đuôi ngắn. Hướng dẫn tương tự á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 lần xuất hiện ban đầu và phanh chủ động ở độ lệch. Hình 7 cho thấy một ví dụ về hồ sơ tăng tốc đầu ra cho cấu trúc cơ bản đánh dấu:

Đánh dấu vào hồ sơ tăng tốc đầu ra cơ bản

Hình 7. Ví dụ về hồ sơ tăng tốc đầu ra cho cấu trúc cơ bản đánh dấu

Tham số Hướng dẫn
Thời lượng

Mục tiêu: 5 ms

Giới hạn: < 20 ms

Tăng tốc đầu ra đỉnh

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

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

Tần suất

Mục tiêu: Tần suất cộng hưởng gấp 2 lần

Giới hạn: < 500 Hz

Cấu trúc cơ bản đánh dấu thấp

Cấu trúc cơ bản đánh dấu thấp là phiên bản mềm hơn, yếu hơn của cấu trúc đánh dấu nhẹ, hoạt động ở dải tần số thấp hơn để mang lại hiệu ứng mạnh mẽ hơn. Bạn cũng có thể mô tả cấu trúc cơ bản này là một lần nhấp có cường độ trung bình ở tần suất thấp hơn, được dùng lặp đi lặp lại để phản hồi linh động. Hướng dẫn tương tự á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 lần xuất hiện ban đầu. Hình 8 cho thấy một ví dụ về hồ sơ tăng tốc đầu ra cho cấu trúc cơ bản đánh dấu thấp:

Hồ sơ tăng tốc đầu ra nguyên thuỷ có số lượng dấu tích thấp

Hình 8. Ví dụ về hồ sơ tăng tốc đầu ra cho cấu trúc cơ bản đánh dấu thấp

Tham số Hướng dẫn
Thời lượng

Mục tiêu: 12 ms

Giới hạn: < 30 ms

Tăng tốc đầu ra đỉnh

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

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

Tần suất

Mục tiêu: Tần suất cộng hưởng 2/3

Giới hạn: < 100 Hz

Cấu trúc cơ bản chiêm chiếp

Bạn có thể mô tả cấu trúc cơ bản chiêm chiếp bằng các tín hiệu đầu vào cho mức điện áp và tần suất rung. Mức tăng 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 phản hồi 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ị.

Cấu trúc cơ bản tăng chậm

Cấu trúc tăng chậm là một biên độ và tần suất quét chậm lên trên với sự xuất hiện mềm và cường độ rung tăng liên tục trong suốt quá trình quét. Bạn có thể triển khai cấu trúc này bằng cách quét nhất quán cả biên độ và tần suất, sử dụng 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à một ví dụ về hồ sơ tăng tốc đầu ra 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à biểu thị cách biên độ rung thay đổi theo thời gian. Đường màu xanh dương khớp với nhãn tần suất ở bên phải và biểu thị cách tần suất rung 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 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 cấu trúc cơ bản tăng chậm

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

Tham số Hướng dẫn
Thời lượng

Mục tiêu: 500 ms

Dung sai: 20 ms

Tăng tốc đầu ra đỉnh

Mục tiêu: 0,5 G

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

Tần suất

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

Thay thế: 1/2 đến tần suất cộng hưởng

Cấu trúc cơ bản tăng nhanh

Cấu trúc tăng nhanh là một biên độ và tần suất quét nhanh hơn lên trên với sự xuất hiện mềm và cường độ rung tăng liên tục trong suốt quá trình quét. Mục tiêu tăng tốc đầu ra và tần suất rung phải giống với cấu trúc cơ bản tăng chậm, đạt được trong thời gian ngắn hơn. Hình 10 cho thấy các tham số đầu vào rung và một ví dụ về hồ sơ tăng tốc đầu ra cho cấu trúc cơ bản tăng chậm. (Đường màu đỏ khớp với nhãn biên độ ở bên trái và biểu thị cách biên độ rung thay đổi theo thời gian. Đường màu xanh dương khớp với nhãn tần suất ở bên phải và biểu thị cách tần suất rung 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 tăng nhanh

Hình 10. Tham số đầu vào và ví dụ về hồ sơ tăng tốc đầu ra cho cấu trúc cơ bản tăng nhanh

Tham số Hướng dẫn
Thời lượng

Mục tiêu: 150 ms

Dung sai: 20 ms

Tăng tốc đầu ra đỉnh

Mục tiêu: Giống như SLOW_RISE

Giới hạn: Giống như SLOW_RISE

Tần suất

Mục tiêu: Giống như SLOW_RISE

Thay thế: Giống như SLOW_RISE

Cấu trúc cơ bản giảm nhanh

Cấu trúc giảm nhanh là một biên độ và tần suất quét nhanh xuống dưới với sự xuất hiện mềm. Bạn có thể sử dụng tần suất cao hơn làm điểm bắt đầu trong khi động cơ đang tăng tốc để đạt được mức tăng tốc đầu ra đỉnh. Tần suất phải giảm liên tục trong suốt 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à một ví dụ về hồ sơ tăng tốc đầu ra 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à biểu thị cách biên độ rung thay đổi theo thời gian. Đường màu xanh dương khớp với nhãn tần suất ở bên phải và biểu thị cách tần suất rung 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 rơi nhanh

Hình 11. Tham số đầu vào và ví dụ về hồ sơ tăng tốc đầu ra cho cấu trúc cơ bản giảm nhanh

Tham số Hướng dẫn
Thời lượng

Mục tiêu: 100 ms

Dung sai: 20 ms

Tăng tốc đầu ra đỉnh

Mục tiêu: 1 G

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

Tần suất

Mục tiêu: Tần suất cộng hưởng gấp 2 lần đến 1 lần

Cấu trúc cơ bản thud

Cấu trúc thud là một hiệu ứng thumpy, thấp, gõ mô phỏng cảm giác vật lý khi gõ vào gỗ rỗng. Cấu trúc cơ bản này hoạt động ở dải tần số thấp, tương tự như cấu trúc cơ bản đánh dấu thấp, để mang lại hiệu ứng mạnh mẽ hơn. Bạn có thể triển khai cấu trúc cơ bản thud dưới dạng biên độ và tần suất quét xuống dưới ở 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à một ví dụ về hồ sơ tăng tốc đầu ra 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à biểu thị cách biên độ rung thay đổi theo thời gian. Đường màu xanh dương khớp với nhãn tần suất ở bên phải và biểu thị cách tần suất rung thay đổi theo thời gian.)

Tham số đầu vào và hồ sơ tăng tốc đầu ra cho cấu trúc cơ bản thud

Hình 12. Tham số đầu vào và ví dụ về hồ sơ tăng tốc đầu ra cho cấu trúc cơ bản thud

Nếu phản hồi tần số của động cơ bị giới hạn, thì một cách triển khai thay thế là bắt đầu bằng tín hiệu truyền động có cường độ đầy đủ ở tần suất cộng hưởng và giảm xuống tần suất thấp nhất có thể cảm nhận đượ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 suất thấp hơn để cảm nhận được độ rung.

Tham số Hướng dẫn
Thời lượng

Mục tiêu: 300 ms

Dung sai: 20 ms

Tăng tốc đầu ra đỉnh

Mục tiêu: 0,25 G

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

Tần suất

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

Thay thế: 1x đến 1/2 tần suất cộng hưởng

Cấu trúc cơ bản spin

Cấu trúc spin mô phỏng động lượng quay của vòng quay nhanh lên xuống với điểm nhấn nhẹ ở giữa. Bạn có thể triển khai cấu trúc spin bằng cách quét biên độ và tần suất một cách độc lập, theo hướng ngược nhau và theo sau là chuyển động ngược lại. Bạn cần sử dụng dải 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à một ví dụ về hồ sơ tăng tốc đầu ra 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à biểu thị cách biên độ rung thay đổi theo thời gian. Đường màu xanh dương khớp với nhãn tần suất ở bên phải và biểu thị cách tần suất rung thay đổi theo thời gian.)

Bạn nên gọi cấu trúc cơ bản spin 2 lần liên tiếp hoặc 3 lần trong các cấu trúc để đạt được cảm giác quay và không ổn định.

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

Tham số đầu vào và hồ sơ tăng tốc đầu ra cho cấu trúc cơ bản xoay

Hình 13. Tham số đầu vào và ví dụ về hồ sơ tăng tốc đầu ra cho cấu trúc cơ bản spin

Tham số Hướng dẫn
Thời lượng

Mục tiêu: 150 ms

Dung sai: 20 ms

Tăng tốc đầu ra đỉnh

Mục tiêu: 0,5 G

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

Tần suất

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

Thay thế: 2/3 đến 1x, sau đó quay lại 1/2 tần suất cộng hưởng