You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非谷歌、三星设备Talk Back使用识别问题及优化方案问询

安卓无障碍服务统计异常问题及优化咨询

问题背景

我们通过iOS和Android系统无障碍服务API统计屏幕阅读器用户数量,发现数据存在两处异常:

  • Android设备中75%为谷歌、三星机型,但Talk Back用户里仅30%来自这类设备,摩托罗拉设备的Talk Back用户占比明显过高;
  • 统计显示Android Talk Back用户数量多于iOS Voice Over用户,这与用户群体规模及行业普遍趋势不符。

已知信息

谷歌、三星的Talk Back服务包名存在差异:

  • Google: com.google.android.marvin.talkback/com.google.android.marvin.talkback.TalkBackService
  • Samsung: com.samsung.android.accessibility.talkback/com.samsung.android.marvin.talkback.TalkBackService

由于包名不统一,我们未采用特定包名识别屏幕阅读器用户,现提出两个核心疑问:

  1. 其他厂商是否会因为服务ID包含"talkback"标识符,导致非严格意义的屏幕阅读器用户被纳入统计?
  2. 求Android端此类数据采集的更优方案。

当前Android端数据采集代码示例

class MyUseCase(
    context: Context,
) {
    private val accessibilityManager =
        context.getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager?

    operator fun invoke(): Map<String, String> {
        val enabledFeatures = getAllAccessibilityServicesEnabled().joinToString(separator = "|")
        return mapOf(ACCESSIBILITY_KEY to enabledFeatures)
    }

    private fun getAllAccessibilityServicesEnabled(): List<String> {
        val accessibilityServiceInfoList =
            accessibilityManager?.getEnabledAccessibilityServiceList(
                AccessibilityServiceInfo.FEEDBACK_ALL_MASK,
            )
        return accessibilityServiceInfoList?.map {
            when {
                it.id.contains(TALK_BACK) -> "Talk Back"
                it.id.contains(SWITCH_ACCESS) -> "Switch Access"
                it.id.contains(UNIVERSAL_SWITCH) -> "Universal Switch"
                it.id.contains(VOICE_ACCESS) -> "Voice Access"
                it.id.contains(SELECT_TO_SPEAK) -> "Select to Speak"
                it.id.contains(BRAILLE_BACK) -> "Braille Back"
                else -> "Unknown"
            }
        } ?: emptyList()
    }

    companion object {
        private const val ACCESSIBILITY_KEY = "accessibility"
        private const val TALK_BACK = "talkback"
        private const val SWITCH_ACCESS = "switchaccess"
        private const val UNIVERSAL_SWITCH = "universalswitch"
        private const val VOICE_ACCESS = "voiceaccess"
        private const val SELECT_TO_SPEAK = "selecttospeak"
        private const val BRAILLE_BACK = "brailleback"
    }
}

内容的提问来源于stack exchange,提问作者darkknightsds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 18:52:48