概要
iPhoneのマイク入力を使用するのにAVAudioSessionを使うと、マイク入力中にシステム音量が下がるのが気になったので調べました。
このページはswift4.2のコードを使用しています。
原因
setCategoryで「playAndRecord」を指定すると出力先ポートがReceiverとなるため、これを内蔵スピーカー(Speaker)に変える必要があります。
現在の出力先は下のコードで調べられます。
let session = AVAudioSession.sharedInstance()
print(session.currentRoute.outputs[0].portType.rawValue)
対応方法
方法1 デフォルトの出力先を内蔵スピーカーにする
デフォルトでReceiverが指定されるのがいけないので、何も接続されていないときは内蔵スピーカー(Speaker)になるように設定します。
イヤホンを刺したときはちゃんとイヤホン(HeadSet)から流れます。
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(AVAudioSession.Category.playAndRecord, mode: .default, options: .defaultToSpeaker)
try session.setActive(true)
} catch let error {}
方法2 出力先を強制的に内蔵スピーカーに固定する
強制的に出力先を内蔵スピーカー(Speaker)に変える方法です。こちらはイヤホンをしていても内蔵スピーカーから音が流れるようになります。
let session = AVAudioSession.sharedInstance()
do {
try session.setCategory(AVAudioSession.Category.playAndRecord, mode: .default)
try session.overrideOutputAudioPort(.speaker)
try session.setActive(true)
} catch let error {}
投稿者プロフィール
最新の投稿
- 2023年10月9日プログラミング【ライセンス】GPL/LGPLライブラリについて
- 2023年8月19日その他【Pixiv】閲覧注意機能が反映されないときに確認すること
- 2023年4月30日プログラミング【JavaScript】ファイルの保存先をダイアログで指定する方法 – showSaveFilePicker()の使い方
- 2022年10月17日その他「NovelAI Diffusion」を使ってみた (Img2Img)