Android MediaRecorder .prepare Необработанный ввод-вывод - PullRequest
0 голосов
/ 04 февраля 2011

При настройке MediaRecorder в качестве простого устройства записи звука, мой «recorderName.prepare ()» отображается Eclipse как «Необработанное исключение ввода-вывода».

Если я добавлю какое-то исключение ошибки, программа запуститсяно очевидно, что .prepare утверждение не работает.

Насколько я могу судить, я объявил все для MediaRecorder:

AudioSource OutPutFormat Encoder OutputFile

Я также объявил разрешения для RECORD_AUDIO и WRITE_EXTERNAL_STORAGE в манифесте.

import android.media.MediaRecorder;
private MediaRecorder mRec;  //Gobal
.
.
.
public void StartRec() 
{
            mRec = new MediaRecorder();
            mRec.setAudioSource(MediaRecorder.AudioSource.MIC);
            mRec.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
            mRec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
            mRec.setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath()+"/test.3gp");

            mRec.prepare(); //Underlined as an Unhandled Exception 
            mRec.start();
}

Eclipse рекомендует окружить его методом try and catch или добавить объявление к методу.

Что касается трассировки стека, которая создается из эмулятора ?, я не могу скомпилировать приложение.

Также, пожалуйста, имейте в виду, что я занимался этим менее двух недель.

Этот вопрос может быть довольно простым, но, учитывая, что я только начал работать на Android, я чувствую себя оправданным вотказаться и попросить помощи: (

Спасибо

1 Ответ

0 голосов
/ 04 февраля 2011

, что prepare() функция может бросить IOException, и поэтому Java требует, чтобы вы всегда были уверены, что исключение 'поймано' или выброшено.

Eclipse предупреждает вас, что вы не уловили это, и самый быстрый способ сделать это, как Eclipse предлагает

try{
    mRec.prepare(); //Underlined as an Unhandled Exception 
}catch (IOException e){
    Log.e("yourTag","There was a problem: ".e->toString());
}

Это означает, что , если есть ошибка, вы ее перехватываете и создаете отчет об ошибках. Теперь вы говорите это:

* Если я добавлю какое-то исключение из-за ошибки, программа запустится, но, очевидно, оператор .prepare не сработает. *

Но действительно ли это так очевидно? Если вы генерируете ошибку, вы должны попытаться исправить это, но если это не так (как вы, похоже, подразумеваете?), Тогда код будет просто работать. Try-catch не препятствует запуску prepare, он только дает возможность для случая (это должен быть исключительный случай, например, файл не может быть использован, найден или открыт), что существует проблема .

(также проверьте эту ссылку: oracle java manual для получения дополнительной информации об исключениях)

...