【Objective-C】AVAudioSessionで Bluetoothイヤホンの内蔵マイクを使用する

概要

AVAudioSessionでBluetoothイヤホンの内蔵マイクからの音声入力を可能にする設定方法をまとめました。

音声出力に関しては「AVAudioSessionの音が Bluetoothイヤホンから流れない」「AVAudioSessionのPlayAndRecordで音量が小さくなる」をご覧ください。

このページはswift4.2のコードを使用しています。

対応方法

setCategoryの指定に「.allowBluetooth」を追加することで解決します。

「.allowBluetooth」と「.allowBluetoothA2DP」の2つを指定している場合はが「.allowBluetooth」優先されます。

指定がない場合、音声入力にはiPhoneのマイクが使用されます。

let session = AVAudioSession.sharedInstance()
do {
    try session.setCategory(AVAudioSession.Category.playAndRecord, mode: .default, options: [.defaultToSpeaker, .allowBluetooth])
    try session.setActive(true)
} catch let error {}

「.allowBluetooth」と「.allowBluetoothA2DP」の違い

setCategoryのoptionsでは、どのBluetoothプロファイルを使用するかを決めています。

「.allowBluetooth」では通話機能を持つ「HFP/HSP」が使用され、「.allowBluetoothA2DP」では音楽再生に適した「A2DP」が使用されます。

この2種類の違いは「音声入力の有無」と「音質」です。

「HFP/HSP」では音声の入出力が可能ですが、電話越しに聞いているような低音質になります。

「A2DP」では音声入力が不可能ですが、音声出力は高音質で聞こえます。

どちらか片方しか使うことができないため、使い分けが必要な場合は再度setCategoryでおちらかを指定する必要があります。

投稿者プロフィール

おかもち
おかもち
ゲームとか作ってます。
Unity触ってることが多いです。
   

コメントを残す


CAPTCHA