일반적으로 기기 제조업체는 각 기기에 대해 생성된 비공개 애셋의 소유자로 간주됩니다. 따라서 기기 제조업체의 엔지니어링 작업은 흔히 기기별로 집중됩니다. 그리고 기기 제조업체는 생태계에 있는 다른 기기와의 일관성을 위해 거의 노력하지 않습니다.
이와는 대조적으로 개발자는 각 기기의 기술 사양과 관계없이 생태계의 모든 Android 휴대전화에서 작동하는 앱을 빌드하려고 노력합니다. 이러한 접근 방식의 차이로 인해 조각화 문제가 발생할 수 있습니다. 예를 들어 특정 휴대전화의 하드웨어 기능이 앱 개발자가 설정한 기대와 일치하지 않습니다. 따라서 햅틱 API가 일부 Android 휴대전화에서는 작동하지만 다른 휴대전화에서는 작동하지 않는다면 결과적으로 생태계가 일관되지 않게 됩니다. 이러한 이유로 제조업체가 모든 기기에 Android 햅틱 API를 구현할 수 있도록 하는 데 하드웨어 구성이 중요한 역할을 합니다.
이 페이지에서는 Android 햅틱 API를 최대한 활용할 수 있도록 하드웨어 규정 준수를 설정하는 단계별 체크리스트를 제공합니다.
다음 그림은 기기 제조업체와 개발자 간의 공통 지식 구축을 보여주는데, 이 단계는 일관성 있는 생태계를 만드는 데 매우 중요합니다.
그림 1. 기기 제조업체와 개발자 간의 지식 구축
햅틱 구현 체크리스트
-
- 햅틱을 구현하기 위한 상수 목록입니다.
-
- HAL 컴포지션 프리미티브의 구현 가이드
-
- 프레임워크의 자리표시자라는 공개 API 상수와 자리표시자를 구현하는 HAL 상수 간의 매핑 권장사항입니다.
- 이 프로세스에 관해 자세히 알아보려면 권장 매핑을 안내하는 디자인 원칙을 참고하세요.
-
- 타겟 햅틱 효과에 관한 안내입니다. 이러한 안내에 따라 하드웨어에 관해 빠르게 확인할 수 있습니다.
아래에서 이러한 각 단계를 자세히 살펴보겠습니다.
1단계: 상수 구현
다음 검사를 진행하여 기기가 햅틱 구현을 위한 최소 요구사항을 충족하는지 확인합니다.
그림 2. 효과 구현
그림 3. 프리미티브 구현
다음과 같은 햅틱 상수의 구현 상태를 확인합니다.
햅틱 상수 | 위치 및 요약 |
---|---|
EFFECT_TICK , EFFECT_CLICK , EFFECT_HEAVY_CLICK , EFFECT_DOUBLE_CLICK |
VibrationEffect 클래스VibrationEffect 의 햅틱 상수에는 입력 이벤트 개념이 포함되지 않으며 UI 요소가 없습니다. 상수는 대신 EFFECT_CLICK 및 EFFECT_HEAVY_CLICK 과 같은 에너지 수준의 개념을 포함하며,
createPredefined() 에 의해 호출됩니다. |
아래에 설명된 대체 진동은 VibrationEffect
상수를 구현하지 않는 기기에서 실행됩니다. 이러한 기기에서 최상의 성능을 발휘하도록 이러한 구성을 업데이트하는 것이 좋습니다.
EFFECT_CLICK
VibrationEffect.createWaveform
으로 생성된 파형 진동 및frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
에 설정된 타이밍EFFECT_HEAVY_CLICK
VibrationEffect.createWaveform
으로 생성된 파형 진동 및frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern
에 설정된 타이밍EFFECT_DOUBLE_CLICK
VibrationEffect.createWaveform
으로 생성된 파형 진동 및 타이밍 (0, 30, 100, 30).EFFECT_TICK
VibrationEffect.createWaveform
으로 생성된 파형 진동 및frameworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
에 설정된 타이밍
그림 4. 피드백 상수 구현
다음 공개 피드백 상수의 상태를 확인합니다.
햅틱 상수 | 위치 및 요약 |
---|---|
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 클래스 HapticFeedbackConstants 의 햅틱 상수는 KEYBOARD_PRESS 및 KEYBOARD_RELEASE 와 같은 특정 UI 요소로 입력 이벤트를 지원하며, performHapticFeedback() 에 의해 호출됩니다. |
2단계: 프리미티브 구현
VibrationEffect.Composition
의 햅틱 원시에는 개발자가 addPrimitive(int primitiveId, float scale, int delay)
를 통해 사용할 수 있는 확장 가능한 강도가 있습니다.
프리미티브는 다음 두 가지 카테고리로 나눌 수 있습니다.
짧은 프리미티브: 일반적으로 20밀리초 미만의 짧은 기간의 프리미티브입니다.
CLICK
,TICK
,LOW_TICK
가 여기에 해당합니다.치프 프리미티브: 진폭과 주파수가 다양한 프리미티브로, 일반적으로 짧은 프리미티브보다 지속 시간이 깁니다.
SLOW_RISE
,QUICK_RISE
,QUCK_FALL
,THUD
,SPIN
입니다.
짧은 프리미티브
짧은 프리미티브는 진동 모터 출력 가속도 프로필로 설명할 수 있습니다. 사용되는 절대 주파수는 액추에이터의 공진 주파수에 따라 각 프리미티브마다 다릅니다. 하드웨어 설정 및 출력 측정 도구에 관한 자세한 내용은 테스트 장비 설정을 참고하세요.
짧은 진동에 유용한 품질 측정항목은 펄스 대 링 비율(PRR)입니다(그림 5 참고). PRR은 진폭이 최대 진폭의 10% 로 감소하는 시간 창 내부의 신호로 정의되는 기본 펄스와 진폭이 최대 진폭의 10% 에서 최대 진폭의 1% 미만으로 감소하는 신호로 정의되는 링 펄스의 비율로 정의됩니다. PRR에 관한 자세한 내용은 파형 분석을 참고하고 결과 분석 및 비교에 관한 자세한 내용은 성능 지도 사용 시 결과 비교를 참고하세요.
그림 5. 맥박 대 울림 비율 정의
짧은 원시 도형을 사용자 입력 의견으로 적용하거나 더 긴 음악 작품에서 재생하여 부드러운 질감을 만듭니다. 즉, 일반적으로 자주 트리거되고 빠르게 연속 재생됩니다. 단일 짧은 원시 도형의 지각된 강도는 더 큰 효과 강도를 복합할 수 있습니다. 따라서 단일 틱 또는 낮은 틱 원시를 더 큰 컴포지션(예: 연속 100개 틱)으로 보정합니다.
원시 항목 클릭
클릭 원시 요소는 일반적으로 기기의 공진 주파수에 가까워서 작동하여 짧은 시간에 최대 출력에 도달하는 강하고 선명한 효과입니다. 다른 원시형보다 강하고 깊으며 최대 강도로 실행됩니다.
가능한 경우 시작 시 모터 오버드라이브를 사용하고 끝 시 능동 제동을 사용하여 모터 상승 및 하강 시간을 짧게 만듭니다. 일부 모터의 경우 사인파 대신 정사각형 파를 사용하면 가속 속도를 높일 수 있습니다. 그림 6은 클릭 기본 요소의 출력 가속 프로필 예를 보여줍니다.
그림 6. 클릭 원시 항목의 출력 가속 프로필 예
매개변수 | 가이드라인 |
---|---|
시간 |
타겟: 12밀리초 제한: 30밀리초 미만 |
최대 출력 가속 |
타겟: 2G 한도: 1G 초과 |
실행 빈도 | 공진 주파수 근처 |
체크표시 프리미티브 (밝은 체크표시)
틱 원시 요소는 일반적으로 더 높은 주파수 범위에서 작동하는 날카롭고 짧은 효과입니다. 이 원시 요소는 짧은 테일과 함께 더 높은 빈도로 발생하는 중간 강도의 클릭으로 설명할 수도 있습니다. 모터 오버드라이브 또는 직사각형 파동을 사용하여 초기 시작에 짧은 상승 시간을 달성하고 오프셋에서 능동 제동을 적용하는 경우에도 동일한 안내가 적용됩니다. 그림 7은 틱 원시 항목의 출력 가속도 프로필 예를 보여줍니다.
그림 7. 틱 원시 항목의 출력 가속 프로필 예
매개변수 | 가이드라인 |
---|---|
시간 |
타겟: 5밀리초 제한: 20밀리초 미만 |
최대 출력 가속 |
타겟: 한도: 0.5~1GB |
실행 빈도 |
타겟: 공진 주파수의 2배 제한: 500Hz 미만 |
낮은 틱 기본 유형
낮은 틱 원시 요소는 밝은 틱의 더 부드럽고 약한 버전으로, 더 낮은 주파수 범위에서 작동하여 효과에 더 많은 깊이를 제공합니다. 이 원시 요소는 동적 피드백에 반복적으로 사용하기 위한 중간 강도의 낮은 빈도의 클릭으로 설명할 수도 있습니다. 모터 오버드라이브 또는 직사각형 파동을 사용하여 초기 시작에 짧은 상승 시간을 달성하는 경우에도 동일한 안내가 적용됩니다. 그림 8은 낮은 틱 원시 항목의 출력 가속도 프로필의 예를 보여줍니다.
그림 8. 낮은 틱 원시 항목의 출력 가속 프로필 예
매개변수 | 가이드라인 |
---|---|
시간 |
타겟: 12밀리초 제한: 30밀리초 미만 |
최대 출력 가속 |
타겟: 한도: 0.2~0.5g |
실행 빈도 |
타겟: 공진 주파수의 2/3 한도: 100Hz 미만 |
Chirp 프리미티브
치프 프리미티브는 전압 수준 및 진동 주파수의 입력 신호로 설명할 수 있습니다. 모터가 다양한 주파수 범위에서 출력할 수 있는 가속도는 액추에이터의 주파수 응답 곡선에 따라 다릅니다. 주파수 범위와 전압 수준은 기기별로 조정해야 합니다.
느린 상승 프리미티브
느린 상승은 부드러운 시작과 함께 진폭 및 주파수가 천천히 위로 스윕되고 스윕 전체에서 진동 강도가 지속적으로 증가하는 것입니다. 공진 외부에서 작동하는 더 낮은 주파수 범위를 사용하여 진폭과 주파수를 모두 일관되게 스윕하여 구현할 수 있습니다. 그림 9는 이 구현의 입력 매개변수와 출력 가속도 프로필 예시를 보여줍니다. 빨간색 선은 왼쪽의 진폭 라벨과 일치하며 시간에 따른 진동 진폭의 변화를 나타냅니다. 파란색 선은 오른쪽의 주파수 라벨과 일치하며 진동 주파수가 시간에 따라 어떻게 달라지는지 나타냅니다.)
그림 9. 느린 상승 원시 항목의 입력 매개변수 및 출력 가속도 프로필 예
모터의 주파수 응답이 제한되어 있는 경우 (공진 주파수에서 충분히 강하지 않음) 공진 주파수의 1/2배에서 1배까지의 사인 스윕을 대신 구현할 수 있습니다. 모터 공진은 끝에서 신호 피크에 도달하는 데 기여합니다.
매개변수 | 가이드라인 |
---|---|
시간 |
타겟: 500밀리초 허용 오차: 20ms |
최대 출력 가속 |
타겟: 0.5G 한도: 0.5~1GB |
실행 빈도 |
타겟: 공진 주파수의 1/2~2/3 대안: 공진 주파수의 1/2 |
빠른 상승 프리미티브
빠른 상승은 진폭과 주파수가 더 빠르게 위로 스윕되며 시작이 부드럽고 스윕 전체에서 진동 강도가 지속적으로 증가합니다. 출력 가속도 및 진동 주파수 타겟은 더 짧은 시간에 달성되는 느린 상승 원시 값과 동일해야 합니다. 그림 10은 진동 입력 매개변수와 느린 상승 원시 항목의 출력 가속도 프로필 예를 보여줍니다. 빨간색 선은 왼쪽의 진폭 라벨과 일치하며 진동 진폭이 시간에 따라 어떻게 달라지는지 나타냅니다. 파란색 선은 오른쪽의 주파수 라벨과 일치하며 진동 주파수가 시간에 따라 어떻게 달라지는지 나타냅니다.)
그림 10. 빠른 상승 원시 항목의 입력 매개변수 및 출력 가속도 프로필의 예
매개변수 | 가이드라인 |
---|---|
시간 |
타겟: 150밀리초 허용 오차: 20ms |
최대 출력 가속 |
타겟: 한도: |
실행 빈도 |
타겟: 대안: |
빠른 하락 프리미티브
빠른 하락은 부드러운 시작과 함께 빠른 진폭 및 주파수 하향 스윕입니다. 모터가 최대 출력 가속도에 도달하기 위해 상승하는 동안 더 높은 주파수를 시작점으로 사용할 수 있습니다. 상승 시간 중에도 스윕 전체에서 주파수가 일관되게 감소해야 합니다. 그림 11은 이 구현의 입력 매개변수와 출력 가속도 프로필 예시를 보여줍니다. 빨간색 선은 왼쪽의 진폭 라벨과 일치하며 진동 진폭이 시간에 따라 어떻게 달라지는지 나타냅니다. 파란색 선은 오른쪽의 주파수 라벨과 일치하며 진동 주파수가 시간에 따라 어떻게 달라지는지 나타냅니다.)
그림 11. 빠른 낙하 원시 항목의 입력 매개변수 및 출력 가속도 프로필의 예
매개변수 | 가이드라인 |
---|---|
시간 |
타겟: 100밀리초 허용 오차: 20ms |
최대 출력 가속 |
타겟: 1G 한도: 0.5~2GB |
실행 빈도 |
타겟: 공진 주파수의 2배~1배 |
쿵 프리미티브
둔탁한 소리는 속이 빈 나무를 두드릴 때의 물리적 느낌을 시뮬레이션하는 둔탁하고 낮은 타격 효과입니다. 이 원시 요소는 저주파 범위에서 작동하여(저주파 원시 요소와 유사) 효과에 더 많은 볼륨을 제공합니다. 둔탁한 소리 프리미티브는 낮은 주파수 범위 (100Hz 미만 권장)에서 진폭 및 주파수 하향 스윕으로 구현할 수 있습니다. 그림 12는 이 구현의 입력 매개변수와 출력 가속도 프로필 예시를 보여줍니다. 빨간색 선은 왼쪽의 진폭 라벨과 일치하며 진동 진폭이 시간에 따라 어떻게 달라지는지 나타냅니다. 파란색 선은 오른쪽의 주파수 라벨과 일치하며 진동 주파수가 시간에 따라 어떻게 달라지는지 나타냅니다.)
그림 12. 쿵 소리 원시 항목의 입력 매개변수 및 출력 가속도 프로필의 예
모터의 주파수 응답이 제한된 경우 대안 구현은 공진 주파수에서 전체 강도 구동 신호로 시작하고 여전히 인식할 수 있는 최저 주파수로 떨어뜨리는 것입니다. 이 접근 방식을 사용하려면 진동을 느낄 수 있도록 더 낮은 주파수에서 구동 신호 강도를 높여야 할 수 있습니다.
매개변수 | 가이드라인 |
---|---|
시간 |
타겟: 300밀리초 허용 오차: 20ms |
최대 출력 가속 |
타겟: 0.25G 한도: 0.2~0.5g |
실행 빈도 |
타겟: 공진 주파수의 1/2~1/3 대체: 공진 주파수의 1~1/2배 |
회전 프리미티브
회전은 중앙에 약간의 강조 표시를 사용하여 빠른 위아래 회전의 회전 모멘텀을 시뮬레이션합니다. 회전은 진폭과 주파수를 독립적으로 반대 방향으로 스윕한 후 역방향 모션을 실행하여 구현할 수 있습니다. 낮은 주파수 범위 (100Hz 미만 권장)를 사용하는 것이 중요합니다. 그림 13은 이 구현의 입력 매개변수와 출력 가속도 프로필 예시를 보여줍니다. 빨간색 선은 왼쪽의 진폭 라벨과 일치하며 진동 진폭이 시간에 따라 어떻게 달라지는지 나타냅니다. 파란색 선은 오른쪽의 주파수 라벨과 일치하며 진동 주파수가 시간에 따라 어떻게 달라지는지 나타냅니다.)
회전 및 불안정한 느낌을 얻으려면 회전 프리미티브를 연속으로 두 번 또는 컴포지션에서 세 번 호출하는 것이 좋습니다.
모터의 주파수 응답이 제한된 경우 공진 주파수의 1/2배에서 1배까지 왕복하는 빠른 사인 스윕을 실행하는 대체 구현을 사용할 수 있습니다. 모터 공진은 자동으로 신호에 중간에 악센트를 줍니다.
그림 13. 회전 원시 항목의 입력 매개변수 및 출력 가속도 프로필의 예
매개변수 | 가이드라인 |
---|---|
시간 |
타겟: 150밀리초 허용 오차: 20ms |
최대 출력 가속 |
타겟: 0.5G 한도: 0.25~0.75g |
실행 빈도 |
타겟: 공진 주파수의 2/3~1/3, 다시 1/2 대체 방법: 2/3~1x, 그런 다음 공진 주파수의 1/2로 다시 |
3단계: HAL과 API 간의 상수 매핑
3단계에서는 공개 HAL 상수와 API 상수 간의 권장 매핑을 제시합니다. 1단계에서 평가된 하드웨어가 HAL 상수를 구현하지 않는 경우 3단계를 사용하여 1단계에 설명된 대체 패턴을 업데이트하여 유사한 출력을 생성합니다. 매핑은 서로 다른 두 가지 기본 모델에 의해 지원됩니다.
불연속 모델(간단)
- 진폭은 이 모델의 핵심 변수입니다. HAL의 각 항목은 서로 다른 햅틱 진폭을 나타냅니다.
- 이 모델은 기본 햅틱 UX를 구현하는 데 필요한 최소 요구사항입니다.
- 고급 햅틱 UX에는 고급 하드웨어 및 고급 모델 (연속 모델)이 필요합니다.
연속 모델(고급)
- 질감 및 진폭은 이 모델의 핵심 변수입니다. HAL의 각 항목은 서로 다른 햅틱 질감을 나타냅니다. 각 HAL 항목의 진폭은 배율 (
S
)로 제어됩니다. - 이 모델에는 고급 하드웨어가 필요합니다. OEM이
VibrationEffect.Composition
과 함께 고급 햅틱 UX를 사용하려는 경우(최신 햅틱 API를 최대한 활용하기 위해) 이 모델을 사용하여 하드웨어를 구현하는 것이 좋습니다.
- 질감 및 진폭은 이 모델의 핵심 변수입니다. HAL의 각 항목은 서로 다른 햅틱 질감을 나타냅니다. 각 HAL 항목의 진폭은 배율 (
불연속 모델
API에서 제공하는 모든 공개 상수를 적절한 HAL 상수와 매핑하는 것이 좋습니다. 이 프로세스를 시작하려면 기기가 HAL에서 정의할 수 있는 불연속 진폭이 있는 햅틱 파형 수를 알아보세요. 이 개념을 중심으로 구성된 구체적인 질문은 다음과 같습니다. 즉, 내 휴대전화에서 사람이 감지할 수 있는 진폭 차이가 있는 단일 임펄스 햅틱 효과를 몇 개나 정의할 수 있나요? 이 질문에 대한 답을 통해 매핑이 결정됩니다.
HAL 상수 정의는 하드웨어에 종속되는 프로세스입니다. 예를 들어 보급형 휴대전화에는 단일 햅틱 파형을 생성하는 하드웨어 기능만 있을 수 있습니다. 고급 하드웨어 구성요소가 있는 기기는 더 광범위한 불연속 진폭 수준을 생성하고 HAL에서 여러 햅틱 파형을 정의할 수 있습니다. HAL-API 상수 매핑은 HAL 상수를 사용(중간 진폭을 기준으로 사용)한 후 여기에서 더 강하거나 약한 효과를 준비합니다.
그림 14. 진폭에 따른 HAL 상수 범위
불연속 진폭이 있는 HAL 상수의 수를 정의했다면 이제 HAL 상수의 수에 따라 HAL 상수와 API 상수를 매핑할 차례입니다. 이 매핑 프로세스에서는 단일 임펄스 API 상수를 최대 3개의 불연속 진폭 수준 그룹으로 분류할 수 있습니다. API 상수를 분류하는 방식은 함께 제공되는 입력 이벤트에 관한 UX 원칙을 기반으로 합니다. 자세한 내용은 햅틱 UX 디자인을 참고하세요.
그림 15. HAL-API 상수 매핑: 불연속 모델
기기가 불연속 진폭이 있는 HAL 상수를 2개만 지원한다면 중간 및 높은 진폭 수준의 HAL 상수를 병합하는 것이 좋습니다. 실제로 이 개념의 예는 EFFECT_CLICK
및 EFFECT_HEAVY_CLICK
을 동일한 HAL 상수(중간 진폭 수준의 HAL 상수)에 매핑하는 것입니다. 기기가 불연속 진폭이 있는 HAL 상수를 하나만 지원한다면 세 수준을 모두 하나로 병합하는 것이 좋습니다.
연속 모델
진폭 확장성이 있는 연속 모델을 적용하여 HAL 상수를 정의할 수 있습니다. 배율 (S
)을 HAL 상수 (예: HAL_H0
, HAL_H1
)에 적용하여 확장된 HAL (HAL_H0
x S
)을 생성할 수 있습니다. 이 경우 그림 16과 같이 확장된 HAL을 매핑하여 API 상수 (HAL_H0
x S1
= H0S1
= EFFECT_TICK
)를 정의할 수 있습니다. 연속 모델의 진폭 확장성을 사용하면 기기는 고유한 질감이 있는 소수의 HAL 상수를 저장하고 배율(S
)을 조정하여 진폭 변형을 추가할 수 있습니다. 기기 제조업체는 제공하려는 다양한 햅틱 질감의 수에 따라 HAL 상수의 수를 정의할 수 있습니다.
그림 16. 질감(HAL_H0) 및 진폭 배율(S)에 따른 HAL 상수 범위
그림 17. HAL-API 상수 매핑: 연속 모델
연속 모델에서 서로 다른 HAL 상수는 서로 다른 진폭이 아닌 서로 다른 햅틱 질감을 나타냅니다. 배율(S
)은 진폭을 구성할 수 있습니다. 그러나 질감 감지(예: 예민성)는 지속 시간 및 진폭의 감지와 관련이 있으므로 HAL-API 매핑의 디자인 프로세스에서 질감과 배율을 조합하는 것이 좋습니다.
그림 18에서는 상수 매핑을 보여줍니다. 진폭 확장성을 통해 하나의 HAL에서 여러 API 상수로 변화량을 증가시킵니다.
그림 18. 진폭 확장성을 통해 변화량 증가
VibrationEffect.Composition
의 PRIMITIVE_TICK
및 PRIMITIVE_CLICK
과 같이 확장 가능한 모든 API 상수의 경우 API 상수의 에너지 수준은 API 상수가 addPrimitive(int primitiveID, float scale,
int delay)
를 통해 선언될 때의 float scale
매개변수에 따라 달라집니다. PRIMITIVE_TICK
및 PRIMITIVE_CLICK
은 서로 다른 HAL 상수를 사용함으로써 명확하게 구분하여 디자인할 수 있습니다. 이 접근 방식은 질감에 변화량을 추가하려는 경우에 권장됩니다.
4단계: 하드웨어 평가
하드웨어 평가에는 효과 1, 2 및 3으로 지정된 세 가지 햅틱 효과 정의가 포함됩니다.
효과 1: 사전 정의된 짧은 햅틱 상수
VibrationEffect.EFFECT_CLICK
상수는 2단계에서 제공된 HAL-API 매핑의 기준 효과 또는 공통분모입니다. 가장 많이 사용되는 효과인 HapticFeedbackConstants.KEYBOARD_PRESS
로 매핑됩니다.
이 효과를 평가하면 명확한 햅틱을 위한 대상 기기의 준비 상태를 판단하는 데 도움이 됩니다.
효과 2: 짧은 맞춤 햅틱 효과
VibrationEffect.createOneShot(20,255)
상수는 맞춤 햅틱 효과를 위한 것입니다. 짧은 단일 맞춤 임펄스의 경우 지속 시간을 정의하는 데 권장되는 최대 기준점은 20ms입니다. 20ms보다 긴 단일 임펄스는 윙윙거리는 진동으로 감지되기 때문에 권장되지 않습니다.
그림 19. 짧은 맞춤 햅틱 효과
효과 3: 진폭 변화가 있는 긴 맞춤 햅틱 효과
VibrationEffect.createWaveform(timings[], amplitudes[], int
repeat)
상수는 진폭 변화가 있는 긴 맞춤 효과를 위한 것입니다. 맞춤 햅틱 효과를 위해 다양한 진폭을 생성하는 기능은 기기의 풍부한 햅틱 기능을 평가하는 지표 중 하나입니다. 권장되는 timings []
및 amplitudes []
는 각각 {500, 500}
및 {128, 255}
이며 진폭이 500ms 샘플링 레이트로 50% 에서 100%로 증가하는 추세를 나타냅니다.
그림 20. 진폭 변화가 있는 긴 맞춤 햅틱 효과
효과 3의 진폭 제어에 관한 하드웨어 기능을 확인하려면 Vibrator.hasAmplitudeControl()
메서드를 사용합니다. 의도대로 다양한 진폭을 사용하여 VibrationEffect.createWaveform
을 실행하려면 결과가 true
여야 합니다.
그림 21. 햅틱 효과 1, 2, 3의 주관적 평가
주관적 평가 실행
빠른 일관성 확인을 위해 먼저 주관적 평가를 실행합니다. 주관적 평가의 목표는 햅틱 효과의 진폭을 관찰하여 기기가 사람이 감지할 수 있는 진폭으로 햅틱을 생성할 수 있는지 확인하는 것입니다.
이 개념을 중심으로 구성된 구체적인 질문은 다음과 같습니다. 즉, 기기가 예상대로 사용자가 감지할 수 있는 햅틱 효과를 생성할 수 있나요? 이 질문에 답하면 사용자가 느낄 수 없으며 감지할 수 없는 햅틱 또는 개발자의 의도대로 파형이 패턴을 생성하지 않는 의도치 않은 햅틱을 포함하여 햅틱 실패를 방지하는 데 도움이 됩니다.
고급 평가 실행
고급 품질 평가를 실행하는 것이 좋습니다. 고급 품질 평가에서는 우수한 햅틱을 구현하기 위해 햅틱 효과의 정량화 가능한 속성을 특성화합니다. 이 평가를 완료하면 기기 제조업체는 현재 햅틱 상태를 진단할 수 있어야 합니다. 즉, 전반적인 품질 향상을 위한 목표를 설정할 수 있어야 합니다. 하드웨어 평가를 참고하세요.