2012-02-20 92 views
4

有没有办法确定VoiceOver当前是否正在通知以及何时停止。我试过UIAccessibilityVoiceOverStatusChanged,但我的理解是,只有在您打开或关闭VoiceOver的情况下。任何帮助将不胜感激。谢谢。iOS确定VoiceOver是否仍在通话

回答

0

这些都是辅助功能布尔值,我的文档中找到:

UIAccessibilityPostNotification 
UIAccessibilityIsVoiceOverRunning 
UIAccessibilityIsMonoAudioEnabled 
UIAccessibilityIsClosedCaptioningEnabled 
UIAccessibilityRegisterGestureConflictWithZoom 

我不认为有任何布尔做你在说什么。

+0

的确,在当前发布的iOS版本(即iOS 5.x)中,VoiceOver停止发言时没有通知。 – 2012-06-13 23:28:24

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) 
} 
1

我们使用otherAudioIsPlaying,问题是一些应用程序在像一些计步器监控等后台运行打开它似乎是声音,从来没有释放这样即使实际上没有任何其他声音或播放其他AudioIsPlaying始终返回1,直到您从后台删除其他应用程序。所以现在不仅你不能播放音乐,而且你也不知道后台的另一个应用程序会搞砸这个测试。苹果真的需要放入一个API来确定Voice Over目前是否在说话。