Как сделать Visualizer во время записи аудио в android

Я знаю, что Visualizer демонстрирует некоторую волну при воспроизведении звука с помощью медиа-плеера Android.

Но я хочу показать Visualizer во время записи звука во время записи. Я хочу показать линейную волну, которая изменяется на основе пользовательского ритма голоса.

Можно ли это сделать в android.

Ответ 1

вызывая каждые x миллисекунд ваш MediaRecorder.getMaxAmplitude(), у вас будет (из официальная документация):

максимальная абсолютная амплитуда, отобранная с момента последнего вызова этот метод.

то вы можете обработать это значение в реальном времени, чтобы нарисовать график или изменить некоторые свойства вида.
не идеально, но я надеюсь, что это поможет =)

изменить:, чтобы вы знали, что полученное значение будет одинаковым для всех устройств Android: от 0 до 32767. (У меня есть более 10 000 пользовательских отчетов, которые дают мне это значение, когда они вдувают микрофон).

Ответ 2

Две важные вещи:

  • вам нужно преобразовать живые байты (от микрофона) в числовые значения inorder для их построения.
  • Поскольку вы используете график реального времени, чтобы начертить эти точки используйте SurfaceView.

    Преобразование байтов записи в числовые значения: Android: прослушиватель записывает звук, если какой-либо звук возникает, где вы увидите, что переменная "temp" содержит числовое значение вашего аудио.

    Графические точки Эти числовые значения, которые указывают ваши значения Y, строятся относительно увеличения значений X (временного интервала) (0,1,2..) в виде графика. Использование SurfaceView например..,

//canvas.drawLine(previous X value,previous Y value,X,Y, paint);
canvas.drawPoint(X,Y,paint);
SurfaceHolder.unlockCanvasAndPost(canvas);

Вам не нужно отображать все значения, для эффективности вы можете фильтровать эти значения с вашими условиями и графиком в течение определенных интервалов времени.

Надеюсь, что это поможет:)

Ответ 3

Возможно, вам придется использовать AudioRecorder вместо MediaRecorder.

Проверьте методы чтения (...) AudioRecorder #, которые помещают аудиоданные в байт [] вместо помещения его непосредственно в файл.

Чтобы показать изменения на графике, вам придется проанализировать данные (которые закодированы в PCM 8 или 16 бит - ссылка) и обновить график в реальном времени.