휴대기기의 햅틱 피드백은 적을수록 좋습니다. 진동이 너무 강하면 사용자의 주의가 기기에 집중되어 있는 상태에서 기기가 손에 들려 있으므로 불편을 끼치고 손이 마비될 수도 있습니다. 또한 사용자의 의도한 작업에 방해가 되어 사용자가 모든 햅틱을 빠르게 사용 중지할 수도 있습니다. 그러나 잘 만들어진 햅틱은 사용자에게 기기와의 더 풍부한 상호작용을 제공하는 가치 있는 감각적 피드백을 제공합니다.
이 페이지에서는 햅틱 사용의 사용 사례를 설명하고, 햅틱 효과의 분류를 소개하며, 앱의 기본 가이드라인을 다룹니다.
앱에 햅틱을 추가하는 사용 사례
앱에 햅틱을 통합해야 하는 몇 가지 이유를 소개합니다.
사용자의 주의가 필요한 이벤트를 사용자에게 알립니다. 예를 들어 수신 전화나 문자 메시지, 캘린더의 예정된 회의가 있습니다.
사용자 작업 후 기기의 상태 변경을 확인합니다. 예를 들어 버튼 누르기에 대한 클릭 의견, 휴대전화 잠금 해제, 지문 수락 또는 거부, 카메라 활성화 등이 있습니다.
효과로 사용자를 만족시키기 위해 이러한 효과는 진행 중인 사용자 작업을 향상하거나 실제 상호작용을 에뮬레이션할 수 있습니다. 스크롤 피드백, 슬라이더가 제자리에 찰칵 소리를 내며 움직이는 것, 애니메이션, 소리, 동영상, 게임과 동기화되는 햅틱 효과 등이 여기에 해당합니다.
햅틱 분류
여기에 제시된 햅틱 원칙은 명확한 햅틱, 리치 햅틱, 윙윙거리는 햅틱을 중심으로 설계되었습니다.
명확한 햅틱
명확한 햅틱은 버튼 누르기와 같은 개별 이벤트와 관련된 선명하고 깔끔한 느낌을 말합니다. 이러한 효과는 물리적 버튼을 누를 때 느껴지는 것과 같은 실제 기계적 동작을 모방하는 것을 목표로 합니다.
Android는 VibrationEffect
에 선명한 햅틱 효과를 사전 정의했습니다. 그러나 일반적으로 앱은 기기 전반에서 효과와 작업의 일관성을 보장하기 위해 HapticFeedbackConstants
의 작업 중심 상수를 사용해야 합니다.
작업 중심 상수의 또 다른 이점은 더 복잡한 효과가 사용자의 기기에서 지원되지 않는 경우 플랫폼에서 대체 동작을 제공할 수 있다는 것입니다.
햅틱 반응의 사용 사례가 확장되면서 사용 가능한 선명한 햅틱이 평범하고 단조롭게 느껴질 수 있습니다. 이 경우 더 표현력이 풍부한 햅틱을 사용하세요.
리치 햅틱
풍부한 햅틱을 사용하려면 일반적으로 더 나은 표현력과 범위를 제공하는 더 넓은 주파수 대역폭을 갖는 햅틱 액추에이터가 필요합니다. 다양한 진폭과 간격으로 선명한 햅틱 원시 값을 시퀀싱하여 풍부한 햅틱을 생성할 수도 있습니다.
풍부한 햅틱 효과의 예는 다음과 같습니다.
- 나비가 손가락 끝에서 날개를 퍼덕이는 것과 비슷한 '펄럭이는' 느낌
- 손가락을 드래그하거나 스와이프할 때 느껴지는 표면의 질감
- 흔들림과 불안정함 또는 무거움과 울림의 감각
윙윙거리는 햅틱
버즈 하프티크는 진동이 끝난 후에도 따끔거리는 느낌과 같은 후유증을 남기는 시끄럽고 날카롭고 관통하는 진동으로 특징지어집니다. 또한 진동이 완전히 멈추기 전에 잔향처럼 느껴지는 울림 효과가 발생하는 경향이 있습니다.
윙윙거리는 햅틱 감각의 예는 다음과 같습니다.
- 전기 드릴 작동
- 오토바이 타기
- 휴대기기에서 키를 누른 후 길게 울리는 진동
무선 호출기와 피처폰 시절부터 성능이 낮은 햅틱 액추에이터나 드라이버가 장착된 저가형 휴대전화는 알림을 위해 윙윙거리는 긴 진동을 내곤 했습니다.
햅틱 디자인 가이드라인
디자인 가이드라인은 대략적으로 다음과 같이 요약할 수 있습니다.
- 윙윙거리는 햅틱보다는 풍부하고 선명한 햅틱을 사용합니다.
- 시스템과 앱 디자인 모두 일관성을 유지하세요.
- 사용 빈도와 중요성을 고려하세요.
사전 정의된 햅틱 상수 및 효과의 우선순위 지정
작업이 HapticFeedbackConstants
에 있는 사전 정의된 작업에 포함되는 경우 해당 상수를 사용합니다. 이렇게 하면 일관된 사용자 상호작용 환경을 보장할 수 있으며 이는 접근성 고려사항으로 특히 유용합니다.
자체 효과를 만드는 경우 VibrationEffect
사전 정의된 효과와 VibrationEffect.Composition
프리미티브를 사용하는 것이 좋습니다. 이를 지원하는 기기에서 일관된 품질의 환경을 제공할 가능성이 더 높습니다.
이벤트 중요도 및 빈도를 강도와 연관
햅틱 효과는 사용자를 압도하거나 불필요하게 느껴서는 안 됩니다.
스크롤이나 텍스트 핸들 이동과 같이 매우 빈번하게 발생하는 이벤트에 적용되는 햅틱 효과는 전반적으로 만족스러운 환경을 제공하기 위해 매우 미묘해야 합니다.
예를 들어 페이지 새로고침이나 양식 제출과 같은 더 중요한 이벤트는 전환 변경이나 목록 스크롤보다 강해야 합니다.
두 개념을 결합하여 상호작용이 타겟에 도달할수록 강해지는 효과를 만듭니다. 예를 들어 드래그, 드롭 또는 스냅 작업으로 틱 시퀀스의 진폭을 점진적으로 늘립니다.
일관성 유지하기
앱 내에서 햅틱을 일관되게 적용합니다. 양식 제출이나 인앱 탐색과 같은 특정 상호작용에 햅틱 반응이 있는 경우 모든 유사한 상호작용에 동일한 효과가 적용되는지 확인합니다. 이렇게 하면 사용자가 특정 햅틱 피드백에 의미를 연결하는 데 도움이 됩니다.
또한 시간 선택 도구나 가상 키보드와 같이 잘 정의된 상호작용에 동일한 HapticFeedbackConstants
를 사용하여 Android 시스템과 일관성을 유지하세요.
햅틱과 함께 시각적 및 청각적 환경 설계
햅틱을 전체 사용자 환경의 일부로 고려하세요.
시각적, 청각적, 햅틱 효과를 공동 설계하는 것이 좋습니다. 시각적 애니메이션 및 사운드 패턴과 조화되거나 일치하도록 만듭니다. 시각적 및 청각적 입력은 인지되는 햅틱을 향상시킬 수 있으며, 잘 설계된 햅틱 효과는 시각적 및 청각적 효과에 실체감을 제공할 수 있습니다.
반대로 동기화되지 않거나 시각적 및 오디오 효과와 일치하지 않는 햅틱 반응은 사용자에게 약간의 불편함을 줄 수 있습니다. 경우에 따라 사용자가 햅틱 액추에이터가 고장났다고 생각할 수 있습니다.
햅틱 반응을 위한 기존 일회성 진동 피하기
VibrationEffect.createOneShot
로 정의되거나 Vibrator.vibrate(long)
및 Vibrator.vibrate(long[], int)
API로 실행되는 것과 같은 기존 일회성 진동을 사용하지 마세요.
이러한 진동은 입력 웨이브폼이 종료된 후에도 오랫동안 지속되면 특히 성능이 낮은 햅틱 액추에이터나 드라이버가 있는 기기에서 윙윙거리는 느낌을 줄 수 있습니다.
좋은 키클릭 햅틱 피드백 신호는 10~20밀리초 동안 지속되어야 합니다. 그러나 액추에이터에 대한 20밀리초 입력이 종료된 후에도 액추에이터가 20~50밀리초 동안 계속 울릴 수 있습니다. 따라서 이러한 유형의 피드백에는 단일 샷 진동을 사용하지 않는 것이 가장 좋습니다.