一、麥克風(fēng)的輸入源
在iOS開(kāi)發(fā)中,錄音時(shí)如果是連接無(wú)線藍(lán)牙外設(shè)時(shí),將輸入源切換為手機(jī)端或藍(lán)牙耳機(jī),此時(shí)需要切換AudioSession中的Category,如果是手機(jī)端的麥克風(fēng)為AVAudioSessionCategoryPlayAndRecord,如果是外設(shè)則為AVAudioSessionCategoryPlayAndRecord同時(shí)附帶的option參數(shù)為AVAudioSessionCategoryOptionAllowBluetooth,具體代碼如下:
1.切換到手機(jī)端:
? ? AVAudioSession *audioSession = [AVAudioSession sharedInstance];
? ? [audioSession setActive:NO error:nil];
? ? [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
? ? [audioSession setActive:YES error:nil];
2.切換到藍(lán)牙外設(shè):
? ? AVAudioSession *audioSession = [AVAudioSession sharedInstance];
? ? [audioSession setActive:NO error:nil];
? ? [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord? withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil];
? ? [audioSession setActive:YES error:nil];
二、音頻播放的輸出源
1.切換到手機(jī)播放,如果是揚(yáng)聲器播放,則有以下兩種方式:
1). 修改Category的默認(rèn)行為:
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];??
2). OverrideOutputAudioPort:
[audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];?
這兩種方法的區(qū)別官方文檔中有詳細(xì)的說(shuō)明。
在iOS7.0之前可用下面方法重定向(屬于AudioSession):
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;??
? ? AudioSessionSetProperty (??
???????????????????????????? kAudioSessionProperty_OverrideAudioRoute??
???????????????????????????? sizeof (audioRouteOverride),??
???????????????????????????? &audioRouteOverride??
???????????????????????????? );??
2.如果是切換到外設(shè)播放,如下:
? ? ? ? [audioSession setCategory:AVAudioSessionCategorySoloAmbient error: nil];
說(shuō)明:Category也可以換成AVAudioSessionCategoryPlayback,這兩者的區(qū)別是AVAudioSessionCategoryPlayback可以在程序進(jìn)入后臺(tái)播放,AVAudioSessionCategorySoloAmbient在程序進(jìn)入后臺(tái)就停止播放。