8

有没有办法确定 VoiceOver 当前是否正在播报以及何时停止。我已经尝试过 UIAccessibilityVoiceOverStatusChanged 但我的理解是,只有当您打开或关闭 VoiceOver 时才会这样做。任何帮助将不胜感激。谢谢。

4

3 回答 3

1

我们使用 otherAudioIsPlaying,问题是某些应用程序在后台运行,例如一些计步器监视器等。打开它看起来的音频并且从不释放它,所以即使实际上没有说话或播放,otherAudioIsPlaying 总是返回 1,直到您从中删除其他应用程序的背景。所以现在你不仅不能播放音乐,而且你不知道后台的另一个应用程序会搞砸这个测试。Apple 确实需要放入一个 API 来确定 Voice Over 当前是否正在讲话。

于 2013-12-10T19:31:35.007 回答
0

这些是我在文档中找到的所有可访问性布尔值:

UIAccessibilityPostNotification
UIAccessibilityIsVoiceOverRunning
UIAccessibilityIsMonoAudioEnabled
UIAccessibilityIsClosedCaptioningEnabled
UIAccessibilityRegisterGestureConflictWithZoom

我认为没有任何布尔值可以做你所说的。

于 2012-04-13T06:00:22.293 回答
0

您可以使用音频会话的“OtherAudioIsPlaying”属性来检查其他系统进程目前是否正在使用音频硬件。如果 VoiceOver 正在说话,它应该是“真”,如果不是,它应该是“假”。

实际上,如果用户在后台播放音乐,这可能无法正常工作。但大多数运行 VoiceOver 的用户通常不会永久启用任何其他音频,因为这使得更难理解 VoiceOver 在说什么。

这是一个使用示例:

UInt32 otherAudioIsPlaying;
UInt32 propertySize = sizeof(otherAudioIsPlaying);

AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying,&propertySize, &otherAudioIsPlaying);

if(otherAudioIsPlaying) {
    // other application is generating sound output (including VoiceOver)
    // but might also be any other app (like iPod App)
}
于 2013-03-26T01:07:12.740 回答