Android 4.4.2 デバイスでステレオ オーディオを録音しようとしています。ただし、単純な録音アプリ (AudioRecord を使用) を介して録音されているオーディオは、提供された構成と一致しません。デバイスがデフォルトの設定値を使用している場合、logcat でエラー メッセージが表示されることを期待していますが、指定された値が AudioHardware と AudioPolicyManagerBase によって受け入れられているように見えることがわかります。
現在の構成:
recorder = new AudioRecord(Media.Recorder.MIC,
sampleRate,
AudioFormat.CHANNEL_IN_STEREO,
AudioFormat.ENCODING_PCM_16BIT,
audioBufferSizeInBytes);
Media.Recorder.AudioSource の変更は、この問題を解決するためのオプションとして取り上げられました。しかし、これは Android スタックの動作を変更していません。構成が無効な場合に (当然のことながら) レコーダーの読み込みに失敗することを除きます。
SampleRate を変更しても、出力に目に見える変化がないことも示されています。44.1kHz と 16kHz の両方が有効なオプションですが、調べるとどちらも 16kHz のオーディオを生成します。出力オーディオも、ステレオにアップミックスされたオーディオの 1 つのチャネルのように見えます。
TinyALSA/Tinycap を使用してオーディオをキャプチャでき、これは期待どおりに動作するようです。
これは Android スタック内の問題でしょうか? それとも、OEM から提供されたコードに問題がある可能性が高いですか?