햅틱 체크리스트 2단계에서 도입된 HAL-API 상수 매핑은 권장 UX 디자인 원칙을 따릅니다. UX 디자인 원칙은 Android 햅틱 API를 사용할 때 언제, 무엇을, 어떻게 사용할지 결정하는 기반을 정의합니다. 이러한 기본 원칙을 자세히 알아보려면 고급 햅틱: 햅틱 API의 시기, 내용 및 방식을 참고하세요.
그림 1. HAL-API 상수 매핑: 불연속 모델
햅틱 효과 선택
햅틱 강도 기준(VibrationEffect
)
원하는 햅틱 강도 (VibrationEffect
)를 결정할 때 우선 EFFECT_CLICK
부터 사용하는 것이 좋습니다. EFFECT_TICK
의 '가벼운' 햅틱과 EFFECT_HEAVY_CLICK
의 '무거운' 햅틱 사이의 중앙값이기 때문입니다. EFFECT_CLICK
으로 시작하여 EFFECT_HEAVY_CLICK
으로 강도를 더하거나 EFFECT_TICK
으로 강도를 줄여 개념상의 에너지를 높이거나 낮출 수 있습니다. EFFECT_DOUBLE_CLICK
은 반복되므로 가장 높은 개념 에너지를 제공합니다.
그림 2. 햅틱 강도 설정
입력 이벤트 및 UI 요소 기준(HapticFeedbackConstants
)
특정 입력 이벤트(예: 길게 누르기 또는 스와이프)나 UI 요소(예: 키보드)와 관련된 목표를 가지고 있다면 HapticFeedbackConstants
에서 사전 정의된 햅틱 상수를 찾습니다.
각 상수의 이름은 KEYBOARD_PRESS
또는 LONG_PRESS
와 같은 특정 사용 사례를 나타냅니다.
실제 버튼 누르기 이벤트 시뮬레이션
입력 이벤트(가상 터치 버튼)의 터치 햅틱 반응은 물리적 항목(예: 기계식 하드웨어 버튼)을 사용했을 때의 버튼 누르기를 시뮬레이션할 수 있습니다.
입력 이벤트: 쌍방향 상호작용 흐름
클릭 이벤트는 기계식 버튼의 동작, 즉 누른 후에 손을 떼는 동작을 시뮬레이션하도록 설계되었습니다. 버튼 누르기의 기계적 임펄스에서 인식되는 에너지는 버튼에서 손 떼기의 경우보다 높습니다. 따라서 버튼 누르기의 햅틱 반응은 버튼에서 손 떼기의 햅틱 반응보다 더 강합니다.
그림 3. 바이너리 입력 이벤트에 의한 햅틱 효과
햅틱 강도: 버튼 누르기의 어포던스
더 짧고 더 가벼운 동작의 입력 이벤트는 가벼운 햅틱과 관련이 있습니다. 더 길고 더 깊은 동작의 입력 이벤트는 강한 햅틱과 관련이 있습니다.
그림 4. 어포던스에 의한 햅틱 효과
동작 입력 이벤트에서 가상 텍스처 시뮬레이션
화면에서 시각적 UI를 따라 손가락을 이동할 때 나타나는 가상 햅틱 텍스처에 맞춰 동작 기반 입력(예: 스크러빙 또는 스크롤)을 조정할 수 있습니다(예: 가상 눈금 표시 UI 요소가 포함된 시계 UI에서 손가락을 이리저리 움직이면 반복된 햅틱 반응이 생성됨).
가상 햅틱 텍스처의 효과는 반복적입니다. 이로 인해 (효과를 반복 없이 또는 한 번만 호출하는 경우) 인식되는 에너지가 진폭보다 높은 경우가 많습니다. 이로 인해, 가상 햅틱 텍스처용으로 설계된 햅틱 상수(예: CLOCK_TICK
또는 TEXT_HANDLE_MOVE
)는 반복된 신호를 통해 움직임의 느낌을 주기 위해 미묘해야 합니다.
그림 5. 가상 텍스처를 시뮬레이션하는 햅틱 효과
감정 포함
햅틱 효과에 긍정적인 감정이나 부정적인 감정을 포함하려면 부정적인 감정에 더 강한 감각을 적용하여 사용자의 주의를 끕니다.
그림 6. 감정을 포함한 햅틱 효과
긴 진동으로 인해 들리는 소음 방지
긴 진동에 따라 주의를 끄는 햅틱을 위해 울리는 노이즈를 방지하려면 패턴을 원활하게 가속하여 증가 효과를 만듭니다. createWaveform(long[] timings, int[] amplitudes, int repeat)
을 사용하면 됩니다.
그림 7. 긴 진동 증가 효과