我有一个流行的大声朗读应用程序,视障人士和盲人也经常使用该应用程序。一些人中,很少有人抱怨说,在使用该应用程序或大声阅读时,它反复显示“语音服务”(我的应用程序名称为@Voice Aloud Reader)。我在启用了不同版本的Android和TalkBack的多部手机上对此进行了测试,但是无法重现此问题。
该应用程序正在显示一条通知,其中包含阅读进度以及暂停/继续,FF和反向等按钮。当然,所有朗读都是通过服务而非活动完成的,因为用户可能要关闭我的活动,或者甚至关闭屏幕,仍然听。我很乐意发布更多技术细节,但不知道哪些是相关的。
我尝试搜索“ TalkBack反复说'服务'”的任何组合,但找不到任何相关的内容。与我联系过的用户在“话语提示”应用中找不到任何设置,以使其停止说这句话。有人可以阐明这个问题吗?
答案 0 :(得分:1)
我找到了问题的原因,部分原因是我自己的应用程序代码,另一部分只是混淆了Android系统和TalkBack在不同设备上的行为。这是正在发生的事情:
该应用程序@Voice Aloud Reader读取加载到其中的文本(网页,文档,书籍),并突出显示它朗读的句子。每次更改句子时,它都会在自己的屏幕(如果可见)和通知中更新进度。通知更新代码很旧,距Android 4天。我不知道然后如何更新通知的内容,在我看来,使用NotificationBuilder更新内容后,更新通知的唯一方法是再次调用我的服务:
startForeground(/* id: */ 1000, myNotifBuilder.build());
多年来,它在TalkBack上也运行良好,没有问题。即使在今天,至少在我拥有的装有Android 5至9和仿真器的5个测试设备上,并激活了TalkBack,它也可以正常工作。但是一些用户报告说,在阅读每个新句子(进度更新)时,TalkBack会说“ Service @Voice”。我最终更新了代码,如下所示,我的用户报告说问题已解决:
if (newNotification) {
startForeground(/* id: */ 1000, myNotifBuilder.build());
}
else {
NotificationManagerCompat.from(this).notify(1000, myNotifBuilder.build());
}
我怀疑这种知识是否会对许多人有所帮助,现在对通知进行了更好的文档记录,并且明确存在“更新通知”一章,该章为开发人员说明了如何在Google文档中正确执行此操作。
答案 1 :(得分:0)
我敢打赌,每次创建MainActivity时,它都会在方向更改时宣布应用名称。