我有一个安卓设备,我把对讲机打开。现在,每当我重新启动/重新启动设备时,对讲机就会直接聚焦在通知栏上,并从“同步sim联系人”、"USB调试连接“等中启动语音。在设备重新启动/重新启动时,是否可以停止关注通知栏,或者在此特定的语音输出期间保持对话的静默?任何帮助都是有价值的。
发布于 2022-07-25 13:48:20
对于你想要做的事情,有一些值得怀疑的用法。
也许您应该发布您的UI/UX和--为什么要限制这种默认的TalkBack行为。TalkBack用户通常(但不限于)视力受损的人,他们在很大程度上依赖服务提供的音频提示。想要聪明一点,这通常是个坏主意。这并不意味着没有有效的用例,因此下一段将向您展示如何将焦点移到您想要的位置。
如果您仍然希望确保可访问性服务在打开片段或活动时聚焦UI的特定部分,那么添加一些助手函数,如:
fun View.requestAccessibilityFocus() {
performAccessibilityAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS, null)
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED)
}
然后在onCreate
或onViewCreated
中请求它:
import androidx.core.view.doOnLayout
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val theViewYouWantToFocus = ... //findViewById or use ViewBinding
theViewYouWantToFocus.doOnLayout {
it.requestAccessibilityFocus()
}
}
doOnLayout的原因是让安卓布局系统完成布局,并确保可访问性系统在试图将特定视图聚焦到对讲机之前得到布局层次结构的最终图像。你的里程可能会不同。
https://stackoverflow.com/questions/73108863
复制相似问题