Страница 1 из 1

Шаг 5. Запись аудио

СообщениеДобавлено: 26 ноя 2012, 20:18
EgorovAD MEPhI
Платформа Android позволяет записывать аудио и кодировать его в AMR-NB, AMR-NW или AAC. Для записи аудио используется класс android.media.MediaRecorder.

Приведем общий алгоритм записи звука в Android.
    1. Создаем новый экземпляр android.media.MediaRecorder.
    2. Задаем источник, откуда хотим писать звук MediaRecorder.setAudioSource(). В данном случае это будет микрофон MediaRecorder.AudioSource.MIC.
    3. Задаем формат выходного файла MediaRecorder.setOutputFormat().
    4. Задаем имя файла MediaRecorder.setOutputFile().
    5. Задаем, во что будем кодировать аудио MediaRecorder.setAudioEncoder().
    6. Вызываем метод MediaRecorder.prepare() у экземпляра MediaRecorder.
    7. Для того чтобы начать запись, вызываем метод MediaRecorder.start().
    8. Для того чтобы остановить запись, вызываем метод MediaRecorder.stop().
    9. Освобождаем память вызовом метода MediaRecorder.release(). Запись аудио использует достаточно много ресурсов, поэтому по окончании работы необходимо сразу же вызвать этот метод.

Приведем пример как можно записать аудио.

Код: выделить все
private MediaRecorder mRecorder = null;

    private void startRecording(String mFileName) {
        mRecorder = new MediaRecorder();
        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        mRecorder.setOutputFile(mFileName);
        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

        try {
            mRecorder.prepare();
        } catch (IOException e) {
            Log.e(LOG_TAG, "prepare() failed");
        }

        mRecorder.start();
    }

    private void stopRecording() {
        mRecorder.stop();
        mRecorder.release();
        mRecorder = null;
    }


Для запуска записи нужно запустить метод startRecording(String mFileName) с указанием файла для записи. Когда запись закончена, вызовите метод stopRecording(). Для получения полноценного записывающего приложения вызов этих методов можно поместить в обработчики нажатия кнопок onClick(View v).

Не забудьте указать разрешение на запись аудио в манифесте RECORD_AUDIO. Также скорее всего может понадобиться разрешение на запись данных на SD-карту WRITE_EXTERNAL_STORAGE.