Он воспроизводит записанный звук с задержкой менее 100 мс.

у записать звук с микрофона и получить доступ к нему для возможного воспроизведения в режиме реального времени. Я не уверен, как использовать класс Android AudioRecord для записи звука с микрофона и быстрого доступа к нему.

Для класса AudioRecord официальный сайт сообщает, что «приложение опрашивает объект AudioRecord во времени», а «размер заполняемого буфера определяет длительность записи перед переполнением непрочитанных данных». Позже предлагается использовать больший буфер при опросе реже. Они никогда не показывают пример в коде.

Один пример, который я видел в книге, использует класс AudioRecord для непрерывного чтения буфера, недавно заполненного звуком живого микрофона, а затем приложение записывает эти данные в файл SD. Псевдокод выглядит примерно так:

set up AudioRecord object with buffer size and recording format info
set up a file and an output stream
myAudioRecord.startRecording();
while(isRecording)
{
    // myBuffer is being filled with fresh audio
    read audio data into myBuffer
    send contents of myBuffer to SD file
}
myAudioRecord.stop();

Как этот код синхронизирует свое чтение со скоростью записи, неясно - правильно ли секвенируется логическое значение «isRecording» в других местах? Кажется, этот код может либо читать слишком часто, либо слишком редко, в зависимости от того, сколько времени занимает чтение и запись.

Документ сайта также говорит, что у класса AudioRecord есть вложенный класс с именем OnRecordPositionUpdateListener, который определен как интерфейс. Информация предполагает, что каким-то образом вы указываете период, который вы хотите получать, уведомляя о ходе записи, и имя вашего обработчика событий, и ваш обработчик событий автоматически совершает вызов с указанной частотой. Я думаю, что структура в псевдокоде будет что-то вроде -

set target of period update message = myListener
set period to be about every 250 ms
other code

myListener()
{
    if(record button was recently tapped)
        handle message that another 250 ms of fresh audio is available
        ie, read it and send it somewhere
)

Мне нужно найти какой-то определенный код, который позволяет мне захватывать и обрабатывать звук с микрофона с задержкой менее 500 мс. Android предлагает еще один класс под названием MediaRecorder, но он не поддерживает потоковую передачу, и я могу захотеть транслировать звук с живого микрофона через сеть Wi-Fi в режиме реального времени. Где я могу найти конкретные примеры?

Ответы на вопрос(0)

Ваш ответ на вопрос