AudioRecordクラスを使っていくつか問題があります。私はバッファに記録されたデータを保存したいが、私はそれを達成するための適切な方法がわからない。私は多数の例を見てきましたが、それらの大部分は複雑で多くの異なるアプローチを表していました。私は単純なものか簡単なものかを探しています。ここでAudioRecord - データをバッファに入れる方法は?
は私のプロジェクトのための私のオーディオの設定です:
int audioSource = AudioSource.MIC;
int sampleRateInHz = 8000;
int channelConfig = AudioFormat.CHANNEL_IN_MONO;
int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
int bufferSizeInBytes = AudioRecord.getMinBufferSize(sampleRateInHz, channelConfig, audioFormat);
short[] buffer = new short[bufferSizeInBytes];
AudioRecord audioRecorder = new AudioRecord(audioSource,
sampleRateInHz,
channelConfig,
audioFormat,
bufferSizeInBytes);
私は 'レコーディング機能を作成しようとは:m
public void Recording() {
audioRecorder.startRecording();
...
audioRecorder.stop();
audioRecorder.release();
}
私は私がいることを知っている' .read使用することになっM(短いです[] audioData、int offsetInShorts、int sizeInShorts)関数です。そしてここで私の問題が始まります。私は、どのようにaudioDataバッファが動作するのかわかりません - 私は関数がオーディオデータに記録されたサンプルを置くと仮定します。データがいっぱいになるとどうなりますか?それは最も早い位置から書き直しを開始しますか?もしそうなら、収集したすべてのサンプルを他の場所にコピーする必要があると私は信じています。もう一つの疑問が浮かび上がっています - .read(...)関数のバッファがすでにいっぱいであるかどうかをどうやって確認できますか?時間を測定してバッファの内容をコピーする必要がありますか、それを達成する別の方法がありますか?また、録音操作全体のスレッドを作成する必要がありますか?ご質問
1つのトピックで非常に多くの質問をするために申し訳ありません:)
** qArray **は何ですか? – OnePunchMan
はarraylistかもしれません。私は今覚えていない。この例を参考にしてください。http://stackoverflow.com/questions/8499042/android-audiorecord-example/13487250#13487250 –