Что делать с разблокировкой Camera
перед записью с помощью MediaRecorder
? В документах говорится:
Запись видео с помощью платформы Android требует тщательного управления объектом Camera и координации с классом MediaRecorder. При записи видео с помощью камеры вы должны управлять вызовами Camera.lock() и Camera.unlock(), чтобы разрешить MediaRecorder доступ к оборудованию камеры, в дополнение к вызовам Camera.open() и Camera.release().
Примечание. Начиная с Android 4.0 (уровень API 14), вызовы Camera.lock() и Camera.unlock() управляются автоматически.
Однако независимо от того, на каком устройстве я тестирую, если я не вызову Camera.unlock
до MediaRecorder.start
, я получу исключение (start failed)
.
Документы врут или я что-то не так делаю?
Мой поток заключается в том, чтобы открыть камеру (используя Camera.open(int)
), установить подсказку записи в true, установить предварительный просмотр FPS и размер, а также ориентацию дисплея. Затем я создаю MediaRecorder
и устанавливаю источник аудио и видео, выходной формат, частоту кадров, размер, битрейт видео, кодировщик аудио и видео, подсказку ориентации, выходной файл, а затем вызываю MediaRecorder.prepare
.
Если все это завершается успешно, когда пользователь нажимает кнопку записи, я вызываю MediaRecorder.start()
и генерируется исключение. Если я вместо этого позвоню:
Camera.unlock();
MediaRecorder.start();
нет исключений.