Android — обратный вызов для MediaRecorder начал запись

Мое приложение должно записывать видео с максимальным временем 8 секунд. Это уже реализовано с помощью MediaRecorder.setMaxDuration (длинные миллисекунды). Приложению также нужен индикатор выполнения вверху и метка с обратным отсчетом оставшегося времени.

Проблема здесь в том, что существует смещение между пользовательским интерфейсом и прогрессом MediaRecorder, и это приводит пользователя в замешательство. Например, пользователь думает, что он/она что-то записал, потому что так сказал прогресс в интерфейсе, но медиа-рекордер обрезал видео на секунду раньше.

Задача состоит в том, чтобы запустить индикатор выполнения и счетчик точно в то же время, когда рекордер фактически начинает запись. Я пытался запустить таймер после MediaRecorder.start() в обратном вызове, когда созданный файл модифицируется в первый раз, но я не нашел способа добиться этого правильным образом. Мы пытались установить жестко заданное смещение для этих значений, но, конечно, это не работало одинаково для каждого устройства.

Я бы хотел, чтобы от MediaRecorder был обратный вызов, чтобы сообщить, что он действительно начал записывать видео, или, может быть, текущую длину.

Проблема ясна? Кто-то решил это раньше?


person gonza89    schedule 03.09.2014    source источник


Ответы (1)


В MediaRecorder известны проблемы с ранним отключением звука. Я реализовал диктофон с помощью кнопки — нажатие кнопки для остановки диктофона фактически давало аудиофайл с обрезанной последней секундой. Не уверен, что смещение вашего пользовательского интерфейса является отдельной проблемой, но я бы попробовал расширить MediaRecorder на полсекунды после того, как пользователь попытается его завершить. Вы можете сделать это, изменив максимальное время на 8,5 секунд, или просто используя эту строку кода:

   android.os.SystemClock.sleep(500);
person David Emelianov    schedule 23.10.2014