使用性能表中提供的数据填充生态系统的性能图。在填充性能图时,请遵循推荐的数据可视化方法指南。将从 DUT 获取的数据与性能图对齐以进行比较。
在性能图中直观呈现数据
效果 1 和效果 2 的性能图中包含峰值时长、峰值振幅和锐度品质因数(FOMS = PRR / 峰值时长)。将您的数据与性能图对齐时,请仔细查看 x 轴(峰值时长)、y 轴(峰值振幅)和气泡大小 (FOMS) 数据。性能图中包含多个类别,例如价格层级(低、中、高)和执行器类型(X-LRA、Z-LRA、ERM)。使用不同的颜色表示不同的类别。
性能图可帮助您根据上下文相关比较(而非“通过”或“失败”判断)来评估目标设备。在解读性能图与 DUT 测量数据的比较结果时,请根据手机所属的类别来确定您的预期,然后考虑以下问题:
- 设备的性能特征位于图中的什么位置?
- 在考虑多种条件(例如价格层级或执行器类型)的情况下,设备的表现是优于、等同于还是不及竞争产品?
- 结果是否符合您的预期?如果不符合,哪个方面表现不佳?
例如,如果搭载 ERM 的低价手机与高端 X-LRA 手机的性能相当,那么与搭载 ERM 的类似低价手机相比,该手机的触感反馈质量更出色。
在 EFFECT_CLICK
(效果 1)和 createOneShot
(效果 2)中,x 轴和 y 轴分别表示峰值时长和峰值振幅。气泡大小表示锐度品质因数 (FOMS = PRR / 峰值时长),图例中的颜色代码表示进行进一步细分的类别(价格层级或执行器类型)。例如,在按价格层级(例如低/中/高)细分的性能图中,每个气泡的颜色表示价格层级。通过将气泡的颜色与手机的价格层级相匹配,您可以将自己的手机与同一价格层级的竞争产品进行比较。
图 1 中的绿色气泡显示了 EFFECT_CLICK
(效果 1)的高质量触感反馈。当时长较短、振幅较高且气泡较大时,效果通常会很清晰且强烈。
图 1 中的红色气泡显示了 EFFECT_CLICK
(效果 1)的低质量触感反馈。当时长较长、振幅较低且气泡较小时,效果通常会有蜂鸣感、模糊不清且较弱。
红色虚线表示最低振幅阈值。如果振幅小于 0.1 g,用户就无法感知触感反馈(失败情况 F03-2)。
图 1. 效果 1 方法指南对应的性能图
图 2. 效果 2 方法指南对应的性能图
从 createOneShot
(效果 2)读取数据的过程与读取效果 1 数据的过程几乎相同,但有一个例外情况。由于效果 2 的目标时长为 20 毫秒,因此接近 20 毫秒的峰值时长表示输出具有良好的制动效果。
createWaveform
(效果 3)的数据侧重于振幅控制功能。第一个加速度(加速度 1 = 50% 振幅 = 分组条形图中的左侧条形)与第二个加速度(加速度 2 = 100% 振幅 = 分组条形图中的右侧条形)之间的目标比率为 2。
图 3. 效果 3 方法指南对应的性能图
性能图数据和图示
以下数据适用于性能图:
- 测试日期:2020 年 4 月 12 日
- 测试的设备型号数量:28
- 测试的设备制造商数量:10
- 设备发布时间段:测试日期之前的 18 个月
在性能图中观察到的触感反馈效果:
VibrationEffect.EFFECT_CLICK
(效果 1)VibrationEffect.createOneShot
(效果 2)VibrationEffect.createWaveform
(效果 3)
价格层级细分
- 高(600 美元或更高)
- 中(300 美元到 600 美元)
- 低(不超过 300 美元)
失败案例
- F01:未实现触感反馈常量。没有可分析的信号。
- F02:信号振幅太弱,无法进行分析或被人感知。MATLAB 错误。
- F03-1:信号振幅太弱,无法进行分析或被人感知。PRR 值小于零 (< 0)。
- F03-2:信号振幅太弱,无法进行分析或被人感知。振幅值小于 0.1 (< 0.1)。
- F04:缺少第一个加速阶段。前半部分没有信号。
- F05:两个阶段之间没有加速。加速度 1 和加速度 2 的最大振幅几乎相同。
硬件评估所需的 Android 版本:Android 10.0(API 级别 29)或更高版本。
用于填充性能图的 Android 版本:Android 8.0(API 级别 26)或更高版本。对于效果 1,使用了
HapticFeedbackConstants.KEYBOARD_PRESS
而非VibrationEffect.EFFECT_CLICK
,因为数据采集是在引入触感反馈实现核对清单之前进行的。
EFFECT_CLICK(效果 1)对应的性能图
关于 EFFECT_CLICK(效果 1)对应的性能图 | |||||||
---|---|---|---|---|---|---|---|
效果定义 (Java) | Vibrator vibrator = getSystemService(Vibrator.class); vibrator.vibrate(VibrationEffect.createPredefined(EFFECT_CLICK)); |
||||||
效果定义 (Kotlin) | val vibrator = getSystemService(Vibrator::class.java) vibrator.vibrate(VibrationEffect.createPredefined(EFFECT_CLICK)) |
||||||
读取性能图时所需的数据 |
|
||||||
通过率 |
|
填充 EFFECT_CLICK(效果 1)对应的性能图时使用的数据 | |||||||
---|---|---|---|---|---|---|---|
设备 ID | 价格层级 | 致动器类型 | 通过/失败 | 峰值时长(毫秒) | 峰值振幅 (g) | PRR | FOMS |
#101 | 高 | X-LRA | 通过 | 167.33 | 0.53 | 20.91 | 0.12 |
#102 | 高 | X-LRA | 通过 | 20.63 | 1.07 | 20.09 | 0.97 |
#103 | 高 | X-LRA | 通过 | 19.98 | 0.98 | 21.75 | 1.09 |
#104 | 高 | X-LRA | 通过 | 22.67 | 1.16 | 20.02 | 0.88 |
#105 | 高 | X-LRA | 通过 | 10.96 | 1.30 | 23.62 | 2.16 |
#106 | 高 | Z-LRA | 通过 | 20.13 | 1.11 | 24.15 | 1.20 |
#107 | 高 | Z-LRA | 通过 | 49.31 | 0.79 | 20.06 | 0.41 |
#108 | 高 | X-LRA | 通过 | 120.71 | 0.24 | 14.93 | 0.12 |
#109 | 高 | Z-LRA | 通过 | 51.46 | 0.43 | 8.69 | 0.17 |
#110 | 高 | X-LRA | 通过 | 8.44 | 1.01 | 27.68 | 3.28 |
#111 | 高 | ERM | 失败 (F01) | 无 | 无 | 无 | 无 |
#112 | 高 | Z-LRA | 通过 | 25.85 | 0.51 | 21.94 | 0.85 |
#113 | 高 | Z-LRA | 通过 | 58.35 | 0.29 | 25.10 | 0.43 |
#114 | 高 | Z-LRA | 通过 | 34.46 | 0.28 | 20.91 | 0.61 |
#115 | 高 | Z-LRA | 通过 | 23.67 | 0.31 | 26.46 | 1.12 |
#116 | 高 | X-LRA | 通过 | 8.40 | 0.44 | 29.82 | 3.55 |
#117 | 高 | Z-LRA | 通过 | 31.35 | 1.13 | 23.65 | 0.75 |
#118 | 中 | Z-LRA | 通过 | 26.42 | 0.42 | 25.05 | 0.95 |
#119 | 中 | Z-LRA | 通过 | 30.65 | 0.48 | 19.69 | 0.64 |
#120 | 中 | Z-LRA | 通过 | 170.65 | 0.97 | 20.16 | 0.12 |
#121 | 中 | Z-LRA | 通过 | 51.69 | 0.55 | 17.14 | 0.33 |
#122 | 中 | X-LRA | 失败 (F01) | 无 | 无 | 无 | 无 |
#123 | 低 | ERM | 失败 (F01) | 无 | 无 | 无 | 无 |
#124 | 低 | ERM | 通过 | 68.33 | 0.93 | 7.40 | 0.11 |
#125 | 低 | ERM | 失败 (F01) | 无 | 无 | 无 | 无 |
#126 | 低 | Z-LRA | 通过 | 41.96 | 0.68 | 8.77 | 0.21 |
#127 | 低 | Z-LRA | 通过 | 9.63 | 0.43 | 4.55 | 0.47 |
#128 | 低 | Z-LRA | 通过 | 22.77 | 0.55 | 26.10 | 1.15 |
图 4. 效果 1 对应的性能图(按价格层级)
图 5. 效果 1 对应的性能图(按致动器类型)
createOneShot(效果 2)对应的性能图
关于 createOneShot(效果 2)对应的性能图 | |||||||
---|---|---|---|---|---|---|---|
效果定义 (Java) | private static final long oneShotTiming = 20; private static final int oneShotAmplitude = 255; |
||||||
效果定义 (Kotlin) | private val oneShotTiming: Long = 20 private val oneShotAmplitude = 255 |
||||||
读取性能图时所需的数据 |
|
||||||
通过率 |
|
填充 createOneShot(效果 2)对应的性能表时使用的数据 | |||||||
---|---|---|---|---|---|---|---|
设备 ID | 价格层级 | 致动器类型 | 通过/失败 | 峰值时长(毫秒) | 峰值振幅 (g) | PRR | FOMS |
#201 | 高 | X-LRA | 通过 | 168.81 | 0.98 | 20.62 | 0.12 |
#202 | 高 | X-LRA | 通过 | 28.35 | 2.29 | 28.95 | 1.02 |
#203 | 高 | X-LRA | 通过 | 77.25 | 0.78 | 21.01 | 0.27 |
#204 | 高 | X-LRA | 通过 | 70.48 | 1.42 | 21.85 | 0.31 |
#205 | 高 | X-LRA | 通过 | 67.92 | 1.19 | 22.61 | 0.33 |
#206 | 高 | Z-LRA | 通过 | 33.44 | 1.34 | 25.19 | 0.75 |
#207 | 高 | Z-LRA | 通过 | 73.90 | 1.36 | 23.13 | 0.31 |
#208 | 高 | X-LRA | 通过 | 102.02 | 0.71 | 20.12 | 0.20 |
#209 | 高 | Z-LRA | 通过 | 63.71 | 0.14 | 3.70 | 0.06 |
#210 | 高 | X-LRA | 通过 | 8.46 | 1.01 | 28.77 | 3.40 |
#211 | 高 | ERM | 失败(F02、F03-1) | 无 | 无 | 无 | 无 |
#212 | 高 | Z-LRA | 通过 | 43.71 | 1.03 | 23.14 | 0.53 |
#213 | 高 | Z-LRA | 通过 | 27.42 | 0.23 | 22.85 | 0.83 |
#214 | 高 | Z-LRA | 通过 | 45.29 | 0.72 | 19.99 | 0.44 |
#215 | 高 | Z-LRA | 通过 | 23.71 | 0.41 | 27.30 | 1.15 |
#216 | 高 | X-LRA | 通过 | 8.31 | 0.43 | 27.58 | 3.32 |
#217 | 高 | Z-LRA | 通过 | 42.19 | 1.03 | 26.97 | 0.64 |
#218 | 中 | Z-LRA | 通过 | 26.38 | 0.42 | 24.74 | 0.94 |
#219 | 中 | Z-LRA | 通过 | 46.77 | 1.01 | 24.64 | 0.53 |
#220 | 中 | Z-LRA | 通过 | 166.33 | 0.97 | 20.61 | 0.12 |
#221 | 中 | Z-LRA | 通过 | 38.60 | 0.42 | 18.21 | 0.47 |
#222 | 中 | X-LRA | 通过 | 76.00 | 0.61 | 23.17 | 0.30 |
#223 | 低 | ERM | 失败 (F03-2) | 55.27 | 0.08 | 1.95 | 0.04 |
#224 | 低 | ERM | 通过 | 39.29 | 0.30 | 7.04 | 0.18 |
#225 | 低 | ERM | 失败 (F03) | 无 | 无 | 无 | 无 |
#226 | 低 | Z-LRA | 通过 | 34.31 | 0.53 | 30.23 | 0.88 |
#227 | 低 | Z-LRA | 通过 | 5.42 | 0.37 | 12.23 | 2.26 |
#228 | 低 | Z-LRA | 通过 | 22.65 | 0.90 | 24.23 | 1.07 |
图 6. 效果 2 对应的性能图(按价格层级)
图 7. 效果 2 对应的性能图(按致动器类型)
createWaveform(效果 3)对应的性能图
关于 createWaveform(效果 3)对应的性能图 | |||||||
---|---|---|---|---|---|---|---|
效果定义 (Java) | private static final long[] waveformTimings = {500, 500}; private static final int[] waveformAmplitudes = {128, 255}; |
||||||
效果定义 (Kotlin) | private val waveformTimings = longArrayOf(500, 500) private val waveformAmplitudes = intArrayOf(128, 255) |
||||||
读取性能图时所需的数据 |
|
||||||
通过率 |
|
填充 createWaveform(效果 3)对应的性能表时使用的数据 | |||||||
---|---|---|---|---|---|---|---|
设备 ID | 价格层级 | 致动器类型 | 通过/失败 | 加速度 1 (50%) | 加速度 2 (100%) | 加速度比 | 增量 |
#301 | 高 | X-LRA | 通过 | 1.19 | 2.02 | 1.70 | 0.83 |
#302 | 高 | X-LRA | 通过 | 0.87 | 1.85 | 2.12 | 0.98 |
#303 | 高 | X-LRA | 通过 | 0.62 | 1.47 | 2.37 | 0.85 |
#304 | 高 | X-LRA | 通过 | 0.82 | 1.89 | 2.30 | 1.07 |
#305 | 高 | X-LRA | 通过 | 0.69 | 1.51 | 2.21 | 0.83 |
#306 | 高 | Z-LRA | 通过 | 1.02 | 1.50 | 1.46 | 0.47 |
#307 | 高 | X-LRA | 通过 | 0.59 | 1.37 | 2.32 | 0.78 |
#308 | 高 | Z-LRA | 通过 | 0.58 | 0.72 | 1.25 | 0.14 |
#309 | 中 | Z-LRA | 通过 | 0.39 | 1.43 | 3.66 | 1.04 |
#310 | 高 | X-LRA | 失败 (F04) | 0.00 | 1.36 | 1.36 | 1.36 |
#311 | 高 | X-LRA | 失败 (F04) | 0.00 | 0.56 | 0.56 | 0.56 |
#312 | 中 | Z-LRA | 失败 (F04) | 0.00 | 0.71 | 0.71 | 0.71 |
#313 | 高 | Z-LRA | 失败 (F05) | 0.60 | 0.61 | 1.02 | 0.01 |
#314 | 高 | Z-LRA | 失败 (F05) | 0.64 | 0.65 | 1.01 | 0.01 |
#315 | 高 | ERM | 失败 (F05) | 0.96 | 0.95 | 0.99 | -0.01 |
#316 | 高 | Z-LRA | 失败 (F05) | 0.40 | 0.40 | 1.00 | 0.00 |
#317 | 高 | Z-LRA | 失败 (F05) | 0.60 | 0.58 | 0.98 | -0.01 |
#318 | 高 | Z-LRA | 失败 (F05) | 0.30 | 0.30 | 1.00 | 0.00 |
#319 | 高 | Z-LRA | 失败 (F05) | 0.57 | 0.56 | 0.99 | 0.00 |
#320 | 中 | Z-LRA | 失败 (F05) | 0.67 | 0.67 | 1.00 | 0.00 |
#321 | 中 | Z-LRA | 失败 (F05) | 0.67 | 0.66 | 0.99 | -0.01 |
#322 | 中 | X-LRA | 失败 (F05) | 0.95 | 1.02 | 1.07 | 0.06 |
#323 | 低 | ERM | 失败 (F05) | 0.86 | 0.88 | 1.01 | 0.01 |
#324 | 低 | ERM | 失败 (F05) | 1.46 | 1.45 | 0.99 | -0.01 |
#325 | 低 | ERM | 失败 (F05) | 0.95 | 0.96 | 1.01 | 0.01 |
#326 | 低 | Z-LRA | 失败 (F05) | 0.90 | 0.92 | 1.02 | 0.02 |
#327 | 低 | Z-LRA | 失败 (F05) | 0.47 | 0.47 | 1.00 | 0.00 |
#328 | 低 | Z-LRA | 失败 (F05) | 0.51 | 0.56 | 1.09 | 0.04 |
图 8. 效果 3 对应的性能图(按通过/失败)