kAudioSessionProperty_AudioRouteChange デリゲートを使用して、Bluetooth またはヘッドセットが VoIP アプリの電話に接続されているかどうかを検出しています。実際の bluetooth デバイスは、次の場所から入手できます。
AVAudioSessionRouteDescription *route = [[AVAudioSession sharedInstance] currentRoute];
for(AVAudioSessionPortDescription *port in route.outputs) {
NSLog(@"AUDIO_OUTPUT IS NOW: %@",port.portType);
}
ただし、この方法ですべての Bluetooth デバイスが検出されるわけではありません。これは、Audi などの vcard 情報などを交換する車の Bluetooth ホストとペアリングされている場合は検出されません。実際、ペアリングされていても currentRoute を確認すると、有効なルートとして表示されません。車のBluetoothデバイスとヘッドセットの違いは何ですか?また、通話に使用されるすべてのBluetoothスピーカー/マイクを検出するにはどうすればよいですか? デフォルトの iOS 電話アプリでは、各デバイスのリストに問題はありません。