10

オーディオを録音しようとしていますが、クラスのstart()メソッドが。MediaRecorderをスローしIllegalStateExceptionます。私は次のコードを使用します:

MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile("/sdcard/");
try {
    recorder.prepare();
} catch (IllegalStateException e) {

// TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Log.i("Try","Exception");
recorder.start(); 

そして許可に従う

<uses-permission android:name="android.permission.RECORD_AUDIO" />
4

2 に答える 2

13

ビジェイ、recorder.setOutputFile("/sdcard/"); ファイルではなくディレクトリを設定しています。それを次のように置き換えます。

mFileName = Environment.getExternalStorageDirectory().getAbsolutePath();
mFileName += "/youraudiofile.3gp";

「/sdcard」を使用すると壊れやすいパスがハードコードされるため、上記を使用します

また、これが機能するには、追加する必要があります

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

AndroidManifext.xml に

于 2011-03-03T05:58:24.873 に答える
7

将来誰かのために役立つかもしれません。メソッドが呼び出されていない場合、またはオーディオ/ビデオ ソース、フォーマット、およびエンコーダーの構成後または前にメソッドが呼び出されIllegalstateExceptionた場合にスローされます。Android ドキュメントのカメラ開発者ガイドに記載されている構成の正しい順序MediaRecorder. PrepareMediarecorder.start

  1. カメラのロック解除
  2. メディアレコーダーへのカメラの制御 -> setCamera
  3. オーディオ/ビデオ ソース、フォーマット、エンコーダーの設定
  4. 準備
  5. 始める
于 2012-04-19T13:36:13.780 に答える