Я создаю приложение для камеры, где видео непрерывно записывается и сохраняется к SD-карте. Видео коротки (несколько минут), и их длина задается с setMaxDuration ().
Целый процесс хорошо работает, в то время как основной вид деятельности находится на переднем плане. Но, когда я перехожу к другому действию (например, настройки), работы видеозаписи в фоновом режиме только, пока макс. продолжительность не достигнута. Файл сохранен, но новая последовательность не может быть запущена, потому что готовят () сбои, по-видимому, потому что setPreviewDisplay () не нравится не иметь надлежащей поверхности для присоединения к.
Я пытался использовать фиктивную Поверхность, фиктивный SurfaceHolder, lockCanvas (), и различные другие приемы, но ничто не работает. Существует ли способ инициализировать MediaRecorder без допустимой поверхности?
Вы реализуете обратные вызовы Surface?
Почему вам нужно инициализировать MediaRecorder без действительной поверхности?
Предполагается ли, что вы будете записывать даже когда вы покидаете основную активность? Или запись прекращается до того, как порождается другая активность?
К сожалению, для записи видео требуется предварительный просмотр на действующей поверхности (Android SDK 1.6–2.2). Записан запрос на улучшение для снятия этого ограничения http://code.google.com/p/android/issues/detail?id=9570