VoiceOver が現在アナウンスしているかどうか、いつ停止したかを判断する方法はありますか。UIAccessibilityVoiceOverStatusChanged を試しましたが、これは VoiceOver をオンまたはオフに切り替えた場合のみであると理解しています。どんな助けでも大歓迎です。ありがとう。
3 に答える
問題は、一部のアプリが歩数計モニターなどのようにバックグラウンドで実行されていることです。実際には何も話されていないか、再生されていない場合でも、他のアプリケーションを削除するまで、 otherAudioIsPlaying は常に 1 を返します。背景。そのため、音楽を再生できないだけでなく、バックグラウンドの別のアプリケーションがこのテストを台無しにすることもわかりません. Apple は、Voice Over が現在話しているかどうかを判断する API を組み込む必要があります。
これらはすべて、ドキュメントで見つけたアクセシビリティブール値です。
UIAccessibilityPostNotification
UIAccessibilityIsVoiceOverRunning
UIAccessibilityIsMonoAudioEnabled
UIAccessibilityIsClosedCaptioningEnabled
UIAccessibilityRegisterGestureConflictWithZoom
あなたが話していることを実行するブール値はないと思います。
オーディオ セッションの「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)
}