しばらく前からコンソールログにこのエラーが表示されていました。アプリケーションの実行には影響しませんが、本当に迷惑です。そこで、このエラーがどこから来たのかを調べてみました。availableInputsを呼び出すと、
NSArray *inputs = [[AVAudioSession sharedInstance] availableInputs];
次のようなログメッセージが表示されます:
ERROR: [0x3d61318c] AVAudioSessionPortImpl.mm:50: ValidateRequiredFields: Unknown selected data source for Port iPhone Microphone (type: MicrophoneBuiltIn)
入力内容を印刷してみました。
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)>
つまり、selectedDataSource は (null) です。これを null 以外にするにはどうすればいいのかわかりません。iPhone のマイクは組み込みの入力です。Apple によってすでに設定されているのでしょうか?
ベストアンサー1
この問題は私だけに起こったわけではないようです...ここで私の理解を共有したいと思います。
私の状況は...オーディオリソースの低レベル制御を持つpjsipライブラリを使用しています。呼び出す前にサウンドデバイスが閉じられていることに気づきました。[[AVAudioSession sharedInstance] availableInputs];
したがって、(推測ですが)AVAudioSession
より高レベルのコントロールとして、エラーが示すように、入力に対応するオーディオ データ ソースを見つけることができませんでした...
問題をさらに調査するには、オーディオソースを変更するコードのどこかをチェックし、呼び出す前にオーディオソースがアクティブになっていることを確認する必要があります。AVAudioSession
今のところはここまでしかできません...オーディオコントロールのより深い理解とより良い説明は常に歓迎されます!!