8

VoiceOver が現在アナウンスしているかどうか、いつ停止したかを判断する方法はありますか。UIAccessibilityVoiceOverStatusChanged を試しましたが、これは VoiceOver をオンまたはオフに切り替えた場合のみであると理解しています。どんな助けでも大歓迎です。ありがとう。

4

3 に答える 3

1

問題は、一部のアプリが歩数計モニターなどのようにバックグラウンドで実行されていることです。実際には何も話されていないか、再生されていない場合でも、他のアプリケーションを削除するまで、 otherAudioIsPlaying は常に 1 を返します。背景。そのため、音楽を再生できないだけでなく、バ​​ックグラウンドの別のアプリケーションがこのテストを台無しにすることもわかりません. Apple は、Voice Over が現在話しているかどうかを判断する API を組み込む必要があります。

于 2013-12-10T19:31:35.007 に答える
0

これらはすべて、ドキュメントで見つけたアクセシビリティブール値です。

UIAccessibilityPostNotification
UIAccessibilityIsVoiceOverRunning
UIAccessibilityIsMonoAudioEnabled
UIAccessibilityIsClosedCaptioningEnabled
UIAccessibilityRegisterGestureConflictWithZoom

あなたが話していることを実行するブール値はないと思います。

于 2012-04-13T06:00:22.293 に答える
0

オーディオ セッションの「OtherAudioIsPlaying」プロパティを使用して、別のシステム プロセスが現在オーディオ ハードウェアを使用しているかどうかを確認できます。VoiceOver が話している場合は「true」、そうでない場合は「false」になります。

実際には、ユーザーがバックグラウンドで音楽を再生している場合、これは正しく機能しない可能性があります。ただし、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 に答える