バッファをマイク入力で埋めて内容を分析しようとしています。私はバッファを作成します:
int bufferSize=AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT);
short[] buffer1 = new short[bufferSize];
次に、Recorder という別のクラスに、次の関連コードがあります。
public short[] fillBuffer(short[] audioData, int bufferSize) {
AudioRecord recorder = new AudioRecord(AudioSource.MIC, 8000, AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT, bufferSize); // instantiate the
// AudioRecorder
if (recorder.getRecordingState() == android.media.AudioRecord.RECORDSTATE_STOPPED)
recorder.startRecording(); // check to see if the Recorder
// has stopped or is not
// recording, and make it
// record.
recorder.read(audioData, 0, bufferSize); // read the PCM
// audio data
// into the
// audioData
// array
if (recorder.getState() == android.media.AudioRecord.RECORDSTATE_RECORDING)
recorder.stop(); // stop the recorder
return audioData;
}
次に、私が呼び出すと:
recorder.fillBuffer(buffer1, bufferSize);
出力をログに記録すると、バッファが有効なオーディオデータと思われるもので半分いっぱいになっているが、ゼロで半分いっぱいになっていることが常に示されます。
通常の半分のサイズのバッファを作成するとエラーが発生したので、実際にはゼロを格納していることがわかります。バッファサイズの奇妙さだけではありません。ここで明らかに間違ったことをしていますか?Java にはかなり精通していますが、これが初めての Android アプリケーションであることを覚えておいてください。