2015-06-17 7 views
0

Из этого фрагмента кода android developer website.Правильно ли вызывать start() при сбое prepare() на объекте MediaRecorder?

Неправильно ли позвонить mRecorder.start(), даже если mRecorder.prepare() не удалось?

private void startRecording() { 
    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(); 
} 

ответ

0

Да, это неправильно.

общественного недействительными начало() Добавлено в уровне API 1

начинает захват и кодирование данных в файл, указанный с setOutputFile(). Вызовите это после подготовки(). С уровня API 13, если приложения устанавливают камеру через setCamera (Camera), приложения могут использовать камеру после вызова этого метода. Приложениям не нужно снова запирать камеру. Однако, если этот метод выходит из строя, приложения должны по-прежнему заблокировать камеру. Приложения не должны запускать другой сеанс записи во время записи.

Throws IllegalStateException, если это называется перед подготовкой().

Подробнее here