Запись данных с аудио разъема мобильного телефона - PullRequest
0 голосов
/ 20 декабря 2011

Я пытаюсь записать данные с аудиоинтерфейса моего мобильного телефона.Я использовал функцию аудиозаписи.Вот мой код:

public void Initialize () {

buffersizebytes = AudioRecord.getMinBufferSize(SAMPPERSEC,channelConfiguration, audioEncoding); // 4096 on ion
buffer = new short[buffersizebytes];
buflen = buffersizebytes / 2;
audioRecord = new AudioRecord(
        android.media.MediaRecorder.AudioSource.MIC, SAMPPERSEC,
        channelConfiguration, audioEncoding, buffersizebytes);
acquire();


for(int i=0; i<4096; i++) buffer[i]=1; 

}

public void acquire() {
    try {
        audioRecord.startRecording();
        mSamplesRead = audioRecord.read(buffer, 0, buffersizebytes);
        audioRecord.stop();
    } catch (Throwable t) {
        // Log.e("AudioRecord", "Recording Failed");
    }
}

Я хочу поместить полученные данные в буфер размером 4096 байт.Но моя программа только помещает данные в 1024 байта.Также первые 432 байта также нули.Но я посылаю данные постоянно.В чем может быть проблема?

1 Ответ

1 голос
/ 10 января 2012

getMinBufferSize, как следует из названия, дает вам минимальный размер буфера. Вы можете установить что-нибудь большее, включая 4096.

Что касается первых семплов после инициализации, мой телефон выдает два гигантских пика, которые длятся около 0,5 секунды, поэтому я думаю, это вызвано запуском рекордера. Попробуйте пропустить несколько образцов (скажем, 500) перед обработкой реальных данных.

Кроме того, размер buffer должен быть buffersizebytes/2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...