Главная » Разработка для Android » Использование объекта MediaRecorder

0

Запись  мультимедийных файлов — прерогатива класса MediaRecorder. С его помощью можно записывать  аудио- и видеоданные,  которые потом могут быть использованы вашим приложением или сохранены в источник MediaStore.

Сперва необходимо создать объект MediaRecorder.

MediaRecorder mediaRecorder = new MediaRecorder();

Прежде чем записывать мультимедийные файлы в Android, приложение должно получить полномочия RECORD_AUDIO и/или RECORD_VIDEO. Добавьте в манифест  приложения тег uses-permission для каждого из этих полномочий.

<uses-permission android:name="android.permission.RECORD_AUDIO"/>

<uses-permission android:name="android.permission.RECORD_VIDEO"/>

MediaRecorder позволяет  указать источник для аудио и видео, формат итогового файла, а также кодировщики, использующиеся для записи.

Как и MediaPlayer, объект MediaRecorder управляет записью с помощью машины  состояний.  Это значит, что порядок,  в котором вы настраиваете запись и управляете ею, играет важную роль.

Иными  словами, режимы, через которые проходит эта машина состо- яний, можно описать так:

1) создание нового объекта MediaRecorder;

2) назначение  источника записи;

3) определение  итогового формата;

4) указание кодировщиков для аудио и видео, частоту кадров и резуль- тирующий  размер;

5) выбор файла, в который будет производиться запись;

6) подготовка к записи;

7) запись;

8) конец записи.

Более  детальное  и исчерпывающее  описание  машины  состояний объ- екта MediaRecorder можно найти на сайте для разработчиков под Android по адресу http://developer.android.com/reference/android/media/MediaRecorder.html.

Закончив запись мультимедийного файла,  вызовите  метод release из объекта MediaRecorder, чтобы освободить соответствующие ресурсы.

mediaRecorder.release();

Запись видео: настройка и управление

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

Методы setAudioSource и setVideoSource предлагают обозначить одну из статических  констант,  хранящихся в MediaRecorder.AudioSource и MediaRecorder.VideoSource, которые определяют  источники для аудио- и видеоданных  соответственно.

Задав  источники для записи,  выберите  итоговый  формат  с помощью метода setOutputFormat, передав  ему одну из констант,  хранящихся в MediaRecorder.OutputFormat.

Укажите кодировщики для аудио и видео с помощью методов setEncoder, используя константы  из класса  MediaRecorder.[Audio/ Video]Encoder. При желании установите частоту кадров и размер итогового видео.

В завершение с помощью метода setOutputFile передайте файл, в который будет производиться запись. И только после этого вызовите метод prepare.

В листинге  11.9 показано,  как настроить  MediaRecorder для записи аудио- и видеоданных  с микрофона и камеры  соответственно,  используя итоговый  формат  и кодировщики по умолчанию  и сохраняя  запись  на карту SD.

Листинг 11.9. Настройка объекта MediaRecorder

MediaRecorder mediaRecorder = new MediaRecorder();

// Настройте источники для записи mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

// Установите итоговый формат mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);

// Укажите кодировщики для аудио и видео mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);

// Задайте файл для сохранения записи mediaRecorder.setOutputFile("/sdcard/myoutputfile.mp4");

// Подготовьте MediaRecorder к записи mediaRecorder.prepare();

Чтобы начать запись, вызовите метод start, как показано в дополнении к листингу 11.9.

mediaRecorder.start();

ВНИМАНИЕ

Метод setOutputFile нужно вызвать перед методом prepare и по- сле метода setOutputFormat, иначе произойдет выброс исключения IllegalStateException.

Когда закончите, вызовите метод stop, чтобы завершить запись, и release, чтобы освободить ресурсы объекта MediaRecorder.

mediaRecorder.stop();

mediaRecorder.release();

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии