首先,你需要明確地通知AVAudioSession你允許聲音可以被輸出到藍牙設備,通過setCategory設置
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord
withOptions:AVAudioSessionCategoryOptionAllowBluetoothA2DP
error:&error];
通過增加AVAudioSessionCategoryOptionAllowBluetoothA2DP, 我們允許iOS通過藍牙音頻設備來播放我們App的聲音。
接下來是設置藍牙設備作為音頻播放
1.設置為藍牙外設播放
NSArray * bluetoothRoutes = @[AVAudioSessionPortBluetoothA2DP, AVAudioSessionPortBluetoothLE,
AVAudioSessionPortBluetoothHFP];
NSArray * routes = [[AVAudioSession sharedInstance] availableInputs];
AVAudioSessionPortDescription blueRoute;
for (AVAudioSessionPortDescription route in bluetoothRoutes)
{
if ([types containsObject:route.portType])
{
blueRoute = route;
}
}
NSError *error;
if (blueRoute) {
BOOL changeResult = [[AVAudioSession sharedInstance] setPreferredInput:bluetoothPort
error:&audioError];
}
2.設置耳機
NSArray * headsetRoutes = @[AVAudioSessionPortBuiltInMic];
NSArray * routes = [[AVAudioSession sharedInstance] availableInputs];
AVAudioSessionPortDescription headsetRoute;
for (AVAudioSessionPortDescription route in headsetRoutes)
{
if ([types containsObject:route.portType])
{
headsetRoute = route;
}
}
NSError *error;
if (headsetRoute) {
BOOL changeResult = [[AVAudioSession sharedInstance] setPreferredInput:headsetRoute
error:&audioError];
}
3.設置麥克風
NSArray * speakerRoutes = @[AVAudioSessionPortBuiltInSpeaker];
AVAudioSessionPortBluetoothHFP];
NSArray * routes = [[AVAudioSession sharedInstance] availableInputs];
AVAudioSessionPortDescription speakerRoute;
for (AVAudioSessionPortDescription route in speakerRoutes)
{
if ([types containsObject:route.portType])
{
speakerRoute = route;
}
}
NSError *error;
if (speakerRoute) {
BOOL changeResult = [[AVAudioSession sharedInstance] setPreferredInput:speakerRoute
error:&audioError];
}