Android TalkBack反复说“服务[我的应用名称]”

问题描述 投票:3回答:2

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

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

我试图搜索任何术语组合“TalkBack反复说'服务',但找不到任何相关的东西。我联系我的用户在TalkBack应用程序中找不到任何设置,使其停止说这个。有人能解释一下这个问题吗?

android talkback
2个回答
1
投票

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

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

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

它运作良好多年,也在TalkBack下,没有问题。即使在今天,至少有5个测试设备,我使用的是Android 5到9以及模拟器,TalkBack已激活,它可以正常工作。但有些用户报告说,在阅读每个新句子(进度更新)后,TalkBack会说“Service @Voice”。我最终更新了代码如下,我的用户报告问题已解决:

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

我怀疑这些知识可以帮助很多人,现在通知记录更好,并且有一个明确的“更新通知”章节,解释了如何在Google文档中为开发人员正确地做到这一点。


0
投票

我敢打赌,每次创建MainActivity时,它都会在方向更改时宣布应用名称。

SO link

© www.soinside.com 2019 - 2024. All rights reserved.