The hardware assessment delivers quantitative characteristics of three target haptic effects sampled by common methods used to call haptics. At the end of the assessment, performance from each device for each target haptic effect can be applied to the performance map to draw conclusions.
The performance map shows the hardware assessment results from several current Android devices. The goal is to evaluate the target device using a contextually relative comparison (rather than a pass or fail judgement). Specific questions structured around that notion are: Given the price tier and actuator type of my phone, how is the performance compared to my competitors? Do the results meet my expectations? If not, what needs improvement?
Figure 1. Haptics hardware assessment process overview
The assessment observes the results of three methods in the Android haptic framework.
Effect 1: Predefined short haptic constants
This constant is the baseline effect or common denominator in the HAL-API
mapping provided in Step 2. It's mapped with the most commonly used effect
HapticFeedbackConstants.KEYBOARD_PRESS
.
Assessing this effect helps you determine the readiness of your
target device for
clear haptics.
Effect 2: Short custom haptic effect
VibrationEffect.createOneShot(20,255)
For short single custom impulses, 20 ms is the recommended maximum threshold to define duration. A single impulse that's longer than 20 ms isn't recommended because it's perceived as a buzzy vibration.
Figure 2. Short custom haptic effect
Effect 3: Long custom haptic effect with amplitude variation
VibrationEffect.createWaveform(timings[], amplitudes[], int repeat)
The ability to produce varying amplitudes for custom haptic effects is one of
the indicators to evaluate the device's capabilities for
rich haptics.
The recommended timings [ ]
and amplitudes [ ]
are {500, 500}
and
{128, 255}
, respectively. This presents an increasing trend of amplitude from
50% to 100% with a 500 ms sampling rate.
Figure 3. Long custom haptic effect with amplitude variation
To quickly check the hardware capabilities of amplitude control for Effect 3,
try
Vibrator.hasAmplitudeControl()
.
The result has to be true
to execute
VibrationEffect.createWaveform
with varying amplitude as intended.