0

将 MediaRecorder 设置为简单的录音机,Eclipse 将我的“recorderName.prepare()”显示为“Unhandled IOException”。

如果我设置了一些错误异常,程序就会运行,但显然 .prepare 语句不起作用。

据我所知,我已经为 MediaRecorder 声明了所有内容:

AudioSource OutPutFormat 编码器输出文件

我还在清单中声明了 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 建议围绕它进行尝试和捕获或向方法添加声明。

至于从模拟器产生的堆栈跟踪,我无法编译应用程序。

还请记住,我在这里工作不到两周。

这个问题可能非常简单,但考虑到我才刚刚开始使用 Android,我觉得选择退出并寻求帮助是合理的 :(

谢谢你

4

1 回答 1

0

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了解有关异常的更多信息)

于 2011-02-04T11:59:02.613 回答