Метод initRecorder — это место, где производится большая часть настройки. Программа должна знать, куда выполнять запись, поэтому мы указываем путевое имя файла. Если файл уже существует, мы его удаляем. Обратите внимание, что затем мы останавливаем предварительный просмотр камеры, разблокируем ее и подключаем к MediaRecorder? Камера чувствительна к блокированию и разблокированию, и временами нужно блокировать камеру, чтобы предотвратить доступ к ней, а иногда разблокировать, чтобы с ней можно было работать. Один из моментов, когда камера должна быть разблокирована — когда нужно подключить ее к MediaRecorder.
Как только камера подключена, мы устанавливаем остальные атрибуты MediaRecorder, в том числе источник аудио и видео. Но постойте, разве мы не подключили ее только что к программе записи? Подключили. Но, тем не менее, нужно еще явно указать источник видео. Устанавливая камеру в программе записи, мы избегаем необходимости уничтожать объект Camera, чтобы заставить ее создать новый. Перед вызовом метода prepare мы также устанавливаем аудио- и видеокодировщики и путь к выходному файлу на SD-карте. Метод prepare вызывается в конце и подготавливает программу к записи чего-либо. В отличие от MediaPlayer, в MediaRecorder нет метода, подобного prepareAsync. Этот метод завершается http://www.medicalserviceplus.ru/spetsodezhda/ включением доступа к кнопке Begin Recording.
Метод beginRecording сравнительно прост. Он добавляет слушатели, вызывает start, затем устанавливает строку с сообщением о записи и изменяет кнопки. К концу работы метода приложение должно начать видеозапись с отображением сообщения RECORDING (запись) красного цвета (см. ).
Метод stopRecording немного сложнее, отчасти потому, что он может быть вызван в более чем одном месте. Чуть позже мы поговорим о втором таком месте, а пока предположим, что его инициирует кнопка Stop Recording (Остановить запись). Если программа записи по-прежнему допустима, мы отключаем обратные вызовы и затем вызываем stop. Поскольку stop может быть вызван при уже остановленной программе записи, мы обрабатываем исключение, которое сообщает о попытке останова уже остановленной программы записи. Затем мы освобождаем программу записи и камеру и устанавливаем пустое сообщение вместо RECORDING. Наконец, кнопки переключаются из записи на воспроизведение.
Метод playRecording также прост. Мы захватываем объект MediaController для VideoView, указываем ему новый файл и затем вызываем start.
Метод stopPlayRecording еще проще: мы просто останавливаем воспроизведение видеоконтента. Когда приложение находится в режиме воспроизведения, бессмысленно щелкать на кнопке Play Recording (Воспроизвести запись), когда видео уже воспроизводится, либо щелкать на кнопке Stop Recording (Остановить запись), когда оно уже остановлено.
Как упоминалось ранее, действие записи может быть остановлено в более чем одном месте. Одной из настроек приложения записи была максимальная длительность в секунд. Это значит, что запись будет остановлена по истечении секунд и будет активизирован метод обратного вызова onInfo. Давайте посмотрим, как это выглядит .
Эти два метода обратного вызова очень похожи. Единственное отличие между ними связано с условиями, при которых они вызываются. В методе onInfo сообщения не трактуются как ошибки. Метод onInfo может быть вызван, когда достигнут лимит времени записи или максимальный размер файла, если соответствующие опции установлены. В документации по методу onError не указано явно, когда он может быть вызван, но это может произойти в ситуации, например, когда не остается места для записи видеофайла. Если метод onInfo был вызван по истечении лимита времени либо по причине возникновения некоторой ошибки записи, запись останавливается.
Как и ранее, при аудиозаписи нужно установить те же права доступа для аудио (android.permission.RECORD_AUDIO) и SD-карты (android.permission.WRITE_ EXTERNAL_STORAGE), а, кроме того, теперь понадобится добавить права доступа к камере (andriod.permission.CAMERA). Для полноты картины в приве
дено содержимое файла AndroidManifest.xml. Вы заметите, что мы принудительно устанавливаем альбомную ориентацию, и потому файл компоновки находится в /res/ layout-land/main.xml.
Опубликовал Kest
February 14 2015 13:36:05 ·
0 Комментариев ·
2629 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.