当前位置: 首页 > 知识库问答 >
问题:

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

郭弘盛
2023-03-14

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

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

我尝试搜索“TalkBack反复说‘服务’”的任何术语组合,但找不到任何相关内容。就此联系我的用户在TalkBack应用程序中也找不到任何设置来让它停止说这句话。有人能对这个问题有所了解吗?

共有2个答案

邵鸿福
2023-03-14

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

所以链接

柯昆
2023-03-14

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

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

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

它多年来工作良好,在对讲系统下也没有问题。即使在今天,我在至少5台装有Android 5-9和模拟器的测试设备上,在对讲激活的情况下,它也能正常工作。但有用户反映,每读一个新句子(进度更新),TalkBack就说“Service @Voice”。我最终更新了代码,如下所示,我的用户报告说问题解决了:

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

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

 类似资料:
  • 我有一个网络服务在一个域上工作,比如www.abc.com。我想配置我的服务器,这样来自另一个域的请求(除了来自www.abc.com)都不会被接受。我不应该使用用户身份验证或任何与基于令牌的身份验证相关的东西。所以,我能想到的唯一选择是CORS,但我不知道如何使用它。任何帮助都很好。 我正在使用nodejs和express

  • 我试图按照官方指南,使用RESTEasy和JSON-B来启动和运行一个反应性的REST服务。我还添加了对OpenAPI的支持,以测试遵循本指南的服务。 这两个部分都独立工作,服务正确地返回硬编码的演示数据。Swagger UI显示了可用的路由,并允许调用它们。 然而,它并不像我喜欢的那样顺利... 从简单的、无反应的路由中,模式被正确地提取出来: 理想情况下,我不想单独注释每个反应方法。 是否有一

  • 在Wireshark中,当我们在跟踪一个网站后检查DNS响应时,哪个部分反映了“关于名称服务器的信息”? 权威RRS? 附加RRS? 或在答案部分(名称,类型,类,时间,数据) 对不起,是英语和Wireshark的新手。 谢谢你

  • 我面临的问题是,有一个服务,我必须调用,这是一个传统的Spring启动应用程序,而不是反应性的! 下面是一个示例endpoint,它接近上述遗留系统的想法: 我知道我不能用这个来实现真正的反应性善,有没有一个快乐的非阻塞和阻塞的媒介我可以在这里实现? 谢谢

  • 本文向大家介绍说说微服务架构的优势。相关面试题,主要包含被问及说说微服务架构的优势。时的应答技巧和注意事项,需要的朋友参考一下 优势 说明 独立开发 所有微服务都可以根据各自的功能轻松开发 独立部署 根据他们所提供的服务,可以在任何应用中单独部署 故障隔离 即使应用中的一个服务不起作用,系统仍然继续运行 混合技术栈 可以用不同的语言和技术来构建同一应用程序的不同服务 粒度缩放 各个组件可根据需要进

  • 本文向大家介绍说说 Dubbo 服务暴露的过程。相关面试题,主要包含被问及说说 Dubbo 服务暴露的过程。时的应答技巧和注意事项,需要的朋友参考一下 Dubbo 会在 Spring 实例化完 bean 之后,在刷新容器最后一步发布 ContextRefreshEvent 事件的时候,通知实现了 ApplicationListener 的 ServiceBean 类进行回调 onApplicati