Работа с камерой в Android. Часть 2. Записываем видео.

Изначально я хотел сделать эту статью частью предыдущей, но затем все решил вынести этот материал отдельно. Тем более о видео, возможно, позже я смогу рассказать гораздо больше. Для примеров работы с видео я также создал отдельное приложение, очень похожее на то, которое было описано в предыдущей статье.

Запись видео.

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

android_video

Файл activity_main.xml:

Файл content_main.xml:

Для получения приложением доступа к камере не забудьте прописать соответствующее разрешение в манифесте!

Теперь создаем код активности, в котором получаем ссылки на элементы VideoView и FloatingActionButton:

Теперь нам нужно начинать запись видео при нажатии на кнопку. Эту задачу мы можем делегировать другому приложению — Camera app. Как и в первой части наших статей, для этого следует создать намерение Intent с указанием того, что мы хотим сделать. Код обработчика нажатия на кнопку теперь выглядит следующим образом:

Сначала мы создаем Intent, в конструктор которого передаем информацию о том, какое действие мы хотим выполнить. Это мы делаем с помощью константы MediaStore.ACTION_VIDEO_CAPTURE.

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

Ответ можно получить, переопределив метод onActivityResult():

В метод обратного вызова onActivityResult() приходят три параметра: requestCode — это код нашего запроса, чтобы мы знали какой именно запрос сейчас обрабатываем, resultCode(успех, неудача) и объект Intent, представляющий собой, собственно, полученные в ответ на запрос данные.

Убедившись в том, что мы обрабатываем именно то действие, которое хотим и оно успешно выполнено, мы получаем объект Uri, представляющий собой указатель нашего записанного видео, то есть просто его местоположение на диске. Полученный Uri мы передаем компоненту VideoView для воспроизведения видео.

Так выглядит запись видео на экране эмулятора:

android_video_1

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *