0

MediaRecorder を単純なオーディオ レコーダーとして設定すると、「recorderName.prepare()」が Eclipse によって「Unhandled IOException」として表示されます。

エラー例外を配置すると、プログラムは実行されますが、明らかに .prepare ステートメントは機能しません。

私が理解できる限り、MediaRecorder のすべてを宣言しました。

AudioSource OutPutFormat エンコーダー 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 と catch で囲むか、メソッドに宣言を追加することをお勧めします。

エミュレータから生成されたスタック トレースについては、アプリケーションをコンパイルできません。

また、私がこれに参加してから 2 週間も経っていないことを覚えておいてください。

この質問は非常に簡単かもしれませんが、私が 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マニュアルを参照してください)

于 2011-02-04T11:59:02.613 に答える