AVAudioSessionManager availableInputs"端口iPhone麦克风的未知选定数据源"

xia*_*lin 23 iphone ios avaudiosession

我已经在控制台日志中注意到这个错误了一段时间.虽然它不会影响我的应用程序的执行,但我发现它真的很烦人.因此,我开始追踪这个错误的来源.当我调用availableInputs时,结果证明了这一点

NSArray *inputs = [[AVAudioSession sharedInstance] availableInputs];
Run Code Online (Sandbox Code Playgroud)

它会给我日志消息:

ERROR:     [0x3d61318c] AVAudioSessionPortImpl.mm:50: ValidateRequiredFields: Unknown selected data source for Port iPhone Microphone (type: MicrophoneBuiltIn)
Run Code Online (Sandbox Code Playgroud)

我试图打印输入..

Printing description of inputs:
<__NSArrayI 0x188c4610>(
<AVAudioSessionPortDescription: 0x188c4580, type = MicrophoneBuiltIn; name = iPhone Microphone; UID = Built-In Microphone; selectedDataSource = (null)>,
<AVAudioSessionPortDescription: 0x18835d90, type = BluetoothHFP; name = Valore-BTi22; UID = 00:23:01:10:38:77-tsco; selectedDataSource = (null)>
Run Code Online (Sandbox Code Playgroud)

所以selectedDataSource是(null).我不知道该怎么办才能使它不为空?iPhone麦克风是一个内置输入......我想它已经由Apple设定了?

xia*_*lin 4

这个问题似乎不仅仅发生在我身上......我只是在这里分享我的理解......

我的情况是..我正在使用 pjsip 库,它对音频资源具有较低级别的控制。我注意到,在我打电话之前,声音设备已关闭[[AVAudioSession sharedInstance] availableInputs];

因此,(我猜)AVAudioSession作为更高级别的控制,无法为其输入找到相应的音频数据源 - 正如错误所示......

要进一步调查问题,您最好检查代码中修改音频源的某个位置..并确保在调用之前激活音频源AVAudioSession

我现在只能走到这一步...对音频控制的更深入的理解和更好的解释总是值得赞赏的!