gpt4 book ai didi

Android TalkBack 重复说 "Service [my app name]"

转载 作者:太空狗 更新时间:2023-10-29 13:45:18 30 4
gpt4 key购买 nike

我有一个很受欢迎的朗读应用程序,视障人士和盲人也经常使用它。少数人提示说,在使用该应用程序或让它大声朗读时,它会反复说“语音服务”(我的应用程序的名称是@Voice Aloud Reader)。我在几部启用了不同版本 Android 和 TalkBack 的手机上对此进行了测试,但无法重现此问题。

该应用程序正在显示一个通知,其中包含阅读进度和暂停/继续、快进和倒退等按钮。当然,所有朗读都是通过服务而不是 Activity 完成的,因为用户可能想要关闭我的 Activity,或者甚至关掉屏幕,还能继续听。我很乐意发布更多技术细节,但不知道哪些是相关的。

我尝试搜索术语“TalkBack 反复说‘服务’”的任意组合,但找不到任何相关内容。就此事与我联系的用户在 TalkBack 应用程序中找不到任何设置来停止说这句话。谁能阐明这个问题?

最佳答案

我找到了我的问题的原因,一部分是我自己的应用程序代码,一部分是 Android 系统和 TalkBack 在不同设备上的混淆行为。这是发生的事情:

@Voice Aloud Reader 应用程序会读取加载到其中的文本(网页、文档、书籍)并突出显示它大声朗读的句子。在每次更改句子时,它都会在自己的屏幕上(如果可见)和通知中更新进度。通知更新代码很旧,来自 Android 4 天。当时我不知道如何更新通知的内容,在我看来,唯一的更新方法是,在使用 NotificationBuilder 更新内容后,再次调用我的服务:

startForeground(/* id: */ 1000, myNotifBuilder.build());

多年来一直很好用,在 TalkBack 下也没有问题。即使在今天,我至少有 5 台运行 Android 5 到 9 的测试设备,并且在模拟器上激活了 TalkBack,它仍然可以正常工作。但一些用户报告说,在阅读每个新句子(进度更新)时,TalkBack 会说“Service @Voice”。我最终更新了代码如下,我的用户反射(reflect)问题已经解决:

        if (newNotification) {
startForeground(/* id: */ 1000, myNotifBuilder.build());
}
else {
NotificationManagerCompat.from(this).notify(1000, myNotifBuilder.build());
}

我怀疑这些知识是否会对很多人有所帮助,现在对通知进行了更好的记录,并且在针对开发人员的 Google 文档中有一个清晰的“更新通知”章节解释了如何正确执行此操作。

关于Android TalkBack 重复说 "Service [my app name]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55209350/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com