您需要在此处结合3个特定于iOS的功能。
1.音频会话类别
根据文档和代码,我列出了它们如下:
public let AVAudioSessionCategoryAmbient: String
public let AVAudioSessionCategorySoloAmbient: String
public let AVAudioSessionCategoryPlayback: String
public let AVAudioSessionCategoryRecord: String
public let AVAudioSessionCategoryPlayAndRecord: String
@available(iOS, introduced: 3.0, deprecated: 10.0)
public let AVAudioSessionCategoryAudioProcessing: String
@available(iOS 6.0, *)
public let AVAudioSessionCategoryMultiRoute: String
针对您的使用情况,我会选择 AVAudioSessionCategoryPlayAndRecord
并设置使用。
对于 Swift:
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord)
对于 Obj-c
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&err]
2.音频会话模式
这些模式有助于自动设置适当的增益、回声消除和其他音频处理功能。
@available(iOS 5.0, *)
public let AVAudioSessionModeDefault: String
@available(iOS 5.0, *)
public let AVAudioSessionModeVoiceChat: String
@available(iOS 5.0, *)
public let AVAudioSessionModeGameChat: String
@available(iOS 5.0, *)
public let AVAudioSessionModeVideoRecording: String
@available(iOS 5.0, *)
public let AVAudioSessionModeMeasurement: String
@available(iOS 6.0, *)
public let AVAudioSessionModeMoviePlayback: String
@available(iOS 7.0, *)
public let AVAudioSessionModeVideoChat: String
@available(iOS 9.0, *)
public let AVAudioSessionModeSpokenAudio: String
我会为您的情况选择
AVAudioSessionModeVideoChat
并在Swift中进行设置。
AVAudioSession.sharedInstance().setMode(AVAudioSessionModeVideoChat)
Obj-c
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeVideoChat error:&err]
3. 音频路由
默认情况下,对于大多数模式/类别,音频会路由到听筒/接收器
。如果您想使用扬声器模式,则必须手动设置相同内容。
Swift
AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
Obj-c
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil]