0

Androidデバイスのマイクから約3秒の音をサンプリングしたいと思います。私が使用しなければならないサンプリングレートは、16ビットpcmエンコーディングで48kHzです。私は次のコードを使用します:

AudioRecord recorder = new AudioRecord(AudioSource.MIC, 48000, AudioFormat.CHANNEL_IN_MONO,
                    AudioFormat.ENCODING_PCM_16BIT, bufferSize); 

            if (recorder.getRecordingState() == android.media.AudioRecord.RECORDSTATE_STOPPED)
                recorder.startRecording(); 
            recorder.read(dataBuffer, 0, bufferSize); 

ここで、AudioRecord.getMinBufferSizeを使用せずにAudioRecorderコンストラクターに大きなバッファーサイズを指定すると、問題が解決すると思いました。(48000 * 3 = 144400サンプル)ただし、read()メソッドは、バッファー全体ではなく、位置4096までのみバッファーを満たします。なんで?

どうすればやりたいことができますか?

4

0 に答える 0