Хотя есть несколько вопросов по этому вопросу в stackoverflow и во всем Интернете, например:
- Класс MediaRecorder начинает запись звука после небольшой задержки
- Почему MediaRecorder задерживает начало записи?
- Тишина MediaRecorder в начале записи (задержка?)
- Ошибка 15953: класс MediaRecorder начинает запись звука после небольшой задержки
Все эти ссылки относятся к периоду от 2010 до 2013 года, тогда как окончательного решения пока не найдено.
Моя ситуация выглядит так:
- Пользователь нажимает «Запись»
- Я начинаю опрос getMaxAmplitude()
- Когда амплитуда больше некоторого значения, скажем, 5000, я запускаю свой MediaRecorder. (функциональное требование)
- MediaRecorder записывает как видео, так и аудио.
- Пользователь нажимает «Остановить запись», сохраняя результат в виде файла .mp4.
Я ожидал, что MediaRecorder будет постоянно записывать как видео, так и звук. К сожалению, это не тот случай.
Как видно по первой ссылке, есть задержка, поэтому не записывается начало (что в моем случае является наиболее важной частью записи). Возможным решением было бы использование AudioRecorder или RehearsalAudioRecorder. Они, к сожалению, только аудио записывают.
Как бы я противостоял этой проблеме?