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 HAL bộ rung xác định và được khung Android ánh xạ đến các API công khai. Thực hiện các bước kiểm tra sau để 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 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ác thành phần 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 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ử nào trên 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ằng createPredefined().

Các chế độ rung thay thế được mô tả tiếp theo sẽ được thực hiện trên những 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 những 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 các 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 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ố phần tử trên giao diện người dùng, chẳng hạn như KEYBOARD_PRESSKEYBOARD_RELEASE, được gọi bằng performHapticFeedback().

Triển khai các phần tử cơ bản

Các thành phần xúc giác cơ bản 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 thành phần cơ bản có thể được chia thành hai danh mục:

  • Nguyên tắc cơ bản ngắn: Nguyên tắc cơ bản có thời lượng ngắn, thường dưới 20 mili giây. Đây là CLICK, TICKLOW_TICK.

  • Nguyên tắc cơ bản của Chirp: Nguyên tắc cơ bản có biên độ và tần số khác nhau, thường có thời lượng dài hơn so với nguyên tắc cơ bản ngắn. Đó là SLOW_RISE, QUICK_RISE, QUCK_FALL, THUDSPIN.

Nguyên hàm ngắn

Các nguyên tắc cơ bản ngắn có thể được mô tả bằng hồ sơ gia tốc đầu ra của động cơ rung. Tần số tuyệt đối được dùng sẽ khác nhau đối với mỗi thành phần cơ bản, 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ác 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 trên chuông (PRR), như trong Hình 5. PRR được xác định là tỷ lệ giữa xung chính (được xác định bằng tín hiệu trong cửa sổ thời lượng mà biên độ giảm xuống 10% biên độ đỉnh) và xung chuô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 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 phần So sánh kết quả bằng bản đồ hiệu suất.

Tỷ lệ xung đến chuông

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

Áp dụng các thành phần cơ bản ngắn làm phản hồi cho thông tin đầu vào của người dùng hoặc phát trong các bản nhạc dài hơn để tạo kết cấu 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 tục. Cường độ cảm nhận của một nguyên tố 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 dấu đánh dấu duy nhất hoặc dấu đánh dấu nguyên thuỷ có số lượng thấp bằng một thành phần lớn hơn, ví dụ: 100 dấu đánh dấu liên tiếp.

Thao tác nhấp cơ bản

Nguyên tắc cơ bản về lượt 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 số cộng hưởng của thiết bị để đạt được công suất tối đa trong thời gian ngắn. Nó mạnh mẽ và sâu sắc hơn các nguyên mẫu khác, hoạt động với cường độ tối đa.

Nếu có thể, 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 tốc độ độ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 hình 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 của lượt nhấp:

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

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

Tham 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

Tăng tốc đầu ra cao nhất

Mục tiêu: 2 G

Giới hạn: > 1 G

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

Phần đầu đánh dấu (dấu đánh dấu sáng)

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

Đánh dấu 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 nguyên tắc đánh dấu

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

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

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

Tăng tốc đầu ra cao nhất

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

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

Tần suất sao lưu

Mục tiêu: Gấp 2 lần tần số cộng hưởng

Giới hạn: < 500 Hz

Phần tử đánh dấu thấp

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

Tham 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

Tăng tốc đầu ra cao nhất

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

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

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

Phần đầu của Chirp

Các nguyên hàm Chirp 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ể tạo 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 theo từng thiết bị.

Phần đầu tăng chậm

Tăng chậm là một dao động biên độ và tần số chậm tăng dần với độ rung tăng dần 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 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ị mức độ thay đổi của biên độ rung theo thời gian. Đường màu xanh dương trùng khớp với các nhãn tần số ở bên phải và thể hiện tần số 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 nguyên hàm tăng chậm

Nếu phản hồi tần số của động cơ bị hạn chế (không đủ mạnh khi tắt tần số cộng hưởng), thì một cách triển khai thay thế là quét hình sin từ 1/2x đến 1x tần số 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ố Nguyên tắc
Thời lượng

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

Dung sai: 20 mili giây

Tăng tốc đầu ra cao nhất

Mục tiêu: 0,5 G

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

Tần suất sao lưu

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

Lựa chọn thay thế: 1/2 đến tần số cộng hưởng

Phần đầu tăng nhanh

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

Tham số đầu vào và hồ sơ tăng tốc đầu ra cho đối tượng nguyên thuỷ 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 tắc tăng nhanh

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

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

Dung sai: 20 mili giây

Tăng tốc đầu ra cao nhất

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

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

Tần suất sao lưu

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

Phương án thay thế: Giống như SLOW_RISE

Phần tử cơ bản rơi nhanh

Tiếng rơi nhanh là một tiếng quét xuống có biên độ và tần số cao với âm bắt đầu nhẹ. 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 cao nhất. 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à 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ị mức độ thay đổi của biên độ rung theo thời gian. Đường màu xanh dương trùng khớp với các nhãn tần số ở bên phải và thể hiện tần số rung thay đổi theo thời gian.)

Tham số đầu vào và hồ sơ tăng tốc đầu ra cho đối tượng nguyên thuỷ 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 hàm thả nhanh

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

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

Dung sai: 20 mili giây

Tăng tốc đầu ra cao nhất

Mục tiêu: 1 G

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

Tần suất sao lưu

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

Phần tử cơ bản Thud

Tiếng thud là một hiệu ứng âm thanh trầm, có nhịp điệu, mô phỏng cảm giác vật lý khi gõ vào gỗ rỗng. Nguyên tắc cơ bản này hoạt động trong phạm vi tần số thấp, tương tự như nguyên tắc cơ bản về số lần đánh dấu thấp, để mang lại hiệu ứng rõ ràng hơn. Bạn có thể triển khai nguyên hàm tiếng bịch như một biên độ và tần số giảm dần trong phạm vi 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ị mức độ thay đổi của biên độ rung theo thời gian. Đường màu xanh dương trùng khớp với các nhãn tần số ở bên phải và thể hiện tần số 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 nguyên tắc cơ bản thud

Nếu phản hồi tần số của động cơ bị hạn chế, 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 độ tối đa ở tần số cộng hưởng và giảm xuống tần số thấp nhất có thể vẫn 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 số thấp hơn để cảm nhận được rung động.

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

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

Dung sai: 20 mili giây

Tăng tốc đầu ra cao nhất

Mục tiêu: 0,25 G

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

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ử cơ bản Spin

Thao tác xoay mô phỏng một lực xoay của thao tác xoay nhanh lên và xuống 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 nhau và sau đó là chuyển động ngược lại. Bạn cần sử dụng dải tần số thấp (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ị mức độ thay đổi của biên độ rung theo thời gian. Đường màu xanh dương trùng khớp với các nhãn tần số ở bên phải và thể hiện tần số rung thay đổi theo thời gian.)

Bạn nên gọi thành phần cơ bản 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 phản hồi tần số của động cơ bị hạn chế, thì một cách triển khai thay thế là thực hiện quét nhanh hình sin từ 1/2x đến 1x tần số cộng hưởng và quay lại. Cộng hưởng động cơ 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 nguyên tắc xoay

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

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

Dung sai: 20 mili giây

Tăng tốc đầu ra cao nhất

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

Cách khác: 2/3 đến 1 lần, sau đó quay lại 1/2 tần số cộng hưởng