プラグインされていなくても、iOS VoiceOver サウンドをヘッドフォンに転送したい。
つまり、アプリが開いている間、VoiceOver サウンド (およびアプリを使用して再生する他のサウンドAVSpeechUtterance
など) は決してスピーカーに送られるべきではありませんが、接続されている場合はヘッドセットから出てくるはずです。
誰でもこれについて何か提案できますか?
プラグインされていなくても、iOS VoiceOver サウンドをヘッドフォンに転送したい。
つまり、アプリが開いている間、VoiceOver サウンド (およびアプリを使用して再生する他のサウンドAVSpeechUtterance
など) は決してスピーカーに送られるべきではありませんが、接続されている場合はヘッドセットから出てくるはずです。
誰でもこれについて何か提案できますか?
どうやら、ヘッドフォン ジャックにアクセサリが接続されていない限り、サウンドを強制的にヘッドフォンに送ることはできないようです (これにより、物理的なスイッチがアクティブになり、音声がヘッドフォンに送られます)。
次のコード (Swift) を使用して目的を達成しました。このコードは、VoiceOver やその他のサウンドを電話スピーカー (電話を聞く場所) に送り、アプリがフォアグラウンドにある間はラウド スピーカーを無音にします。
let session: AVAudioSession = AVAudioSession.sharedInstance()
do {
try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
try session.overrideOutputAudioPort(AVAudioSessionPortOverride.None)
try session.setActive(true)
} catch {
print("Couldn't override output audio port")
}
iOS デバイスは、認識された (適切なインピーダンスなどの) ヘッドセットまたはヘッドフォンが現在ジャックに接続されていない限り、オーディオ出力用にヘッドセット ジャックの電源を入れません。
VoiceOver オーディオは、有効なヘッドセットがプラグインされていてオーバーライドされていない場合、常にヘッドセットに送信されます。