前述のように、CoreBluetooth は LE デバイス専用である
ため、これはBluetoothHFPデバイスのイベント
を取得するために行ったことです:
1. AVAudioSeesion を開く必要があります:プロジェクトへの
リンク
2. 現在利用可能な入力:AVFoundation.framework
NSArray *availInputs = [[AVAudioSession sharedInstance] availableInputs];
3. ルート変更の通知について
: 新しいセットアップAVAudioSession
b.オブザーバーを登録するAVAudioSessionRouteChangeNotification
- (BOOL)prepareAudioSession {
// deactivate session
BOOL success = [[AVAudioSession sharedInstance] setActive:NO error: nil];
if (!success) {
NSLog(@"deactivationError");
}
// set audio session category AVAudioSessionCategoryPlayAndRecord options AVAudioSessionCategoryOptionAllowBluetooth
success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil];
if (!success) {
NSLog(@"setCategoryError");
}
// activate audio session
success = [[AVAudioSession sharedInstance] setActive:YES error: nil];
if (!success) {
NSLog(@"activationError");
}
return success;
}
変更のリッスンを開始するときにこれを呼び出します。
[self prepareAudioSession];
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
[defaultCenter addObserver:self
selector:@selector(bluetoothAvailabilityDidChange:)
name:@"BluetoothConnectabilityChangedNotification"
object:nil];
- バックグラウンドでコールバックを取得したい場合は、オーディオと AirPlay をターゲットの機能に追加する必要があります。
!! この回答は、解決策が得られたときに役に立ちました