オーディオ録音アプリに奇妙なバグがあり、呼び出すとデバイスが内部オーディオに切り替わります。つまりAudioRecord.startRecording();
、すべてのアプリ (音楽プレーヤー、YouTube など) からのすべてのオーディオが、その時点から強制的にスピーカーを通過し、マイク付きのヘッドセットが接続されている場合でも、録音は内蔵マイクから行われます。
ヘッドセットが再び機能するようにする唯一の方法は、アプリを終了して電話の音量を調整することです.
私の質問は、スピーカーへの強制切り替えを引き起こすために私が何をしているのか誰か教えてくれるかどうかです。それとも、テストに使用しているデバイス/ROM の問題でしょうか?
切り替えを引き起こす呼び出しは次のとおりです。
AudioRecord record = openAudio();
record.startRecording();
...
private AudioRecord openAudio()
{
int samplingRate = Integer.parseInt(prefs.getString("sample_rate", "44100"));
int min = AudioRecord.getMinBufferSize(samplingRate,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT);
Log.d("Recorder", "Min buffer size: " + min);
Log.d("Recorder", "Sampling Rate: " + samplingRate);
if (min < 4096)
min = 4096;
AudioRecord record = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, samplingRate,
AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, min);
if (record.getState() == AudioRecord.STATE_INITIALIZED)
{
// Log.d("Recorder", "" で初期化されたオーディオ レコーダー " + record.getSampleRate()); レコードを返します。} record.release(); レコード = null; null を返します。}
誰かが自分のデバイスでテストすることに興味がある場合は、完全なアプリを次に示します。
https://play.google.com/store/apps/details?id=org.yuttadhammo.androidwave
https://github.com/yuttadhammo/androidwave
更新: リハーサル アシスタントでも同じ動作が発生しますが、圧縮されていないオーディオを録音した場合のみです。この問題は、圧縮されていないオーディオの録音に関係しているようです。理由はありますか?