Android TalkBack反复地说:“我不知道;服务[我的应用程序名称]”;

Android TalkBack反复地说:“我不知道;服务[我的应用程序名称]”;,android,talkback,Android,Talkback,我有一个广受欢迎的朗读应用程序,也经常被视障人士和盲人使用。他们中的一些人,很少有人抱怨说,当使用该应用程序或让它大声朗读时,它反复地说“语音服务”(我的应用程序的名称是@Voice louded Reader)。我在几个不同版本的Android手机上测试了这一点,并启用了对讲功能,但无法重现这个问题 该应用程序显示了一个带有阅读进度的通知,以及暂停/恢复、FF和反转等按钮。当然,所有的朗读都是通过服务完成的,而不是活动,因为用户可能希望关闭我的活动,甚至关闭屏幕,并且仍然在听。我很乐意发布更多

我有一个广受欢迎的朗读应用程序,也经常被视障人士和盲人使用。他们中的一些人,很少有人抱怨说,当使用该应用程序或让它大声朗读时,它反复地说“语音服务”(我的应用程序的名称是@Voice louded Reader)。我在几个不同版本的Android手机上测试了这一点,并启用了对讲功能,但无法重现这个问题

该应用程序显示了一个带有阅读进度的通知,以及暂停/恢复、FF和反转等按钮。当然,所有的朗读都是通过服务完成的,而不是活动,因为用户可能希望关闭我的活动,甚至关闭屏幕,并且仍然在听。我很乐意发布更多的技术细节,但不知道哪些是相关的


我试着搜索“对讲反复说‘服务’”,但找不到任何相关的词语组合。我联系过我的用户在TalkBack应用程序中找不到任何设置来阻止它这样说。有人能解释一下这个问题吗?

我敢打赌,每次创建MainActivity时,它都会在定向上宣布应用程序名称的更改


我找到了问题的原因,一部分是我自己的应用程序代码,另一部分是Android系统的混乱行为和不同设备上的对讲。下面是发生的情况:

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

startForeground(/* id: */ 1000, myNotifBuilder.build());
多年来,它一直运行良好,也在反馈下,没有问题。即使是在今天,我用安卓5到9和模拟器至少有5台测试设备上,激活了对讲功能,它仍能正常工作。但一些用户报告说,在阅读每个新句子(进度更新)时,TalkBack会说“Service@Voice”。我最终更新了代码,如下所示,我的用户报告问题已经解决:

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

我怀疑这些知识是否能帮助很多人,现在通知被更好地记录下来,并且有一个清晰的“更新通知”章节解释了如何在谷歌文档中为开发者正确地做到这一点。

听起来像是在不止一次地或在你可能不期望的地方阅读内容描述;但问题有点笼统……谢谢你的回答@keepTrackOfYourStack!事实上,这是另外一回事,我会在帖子中解释。在O或M中,通知的变化更大,你需要为这些版本设置一个频道。。。