web-dev-qa-db-ja.com

Android)でオーディオファイルを録音する方法

私はAndroidで働いています。マイクを介してオーディオファイルを録音するにはどうすればよいですか?また、録音したファイルをエミュレータに保存するにはどうすればよいですか?

21
ifaim

Androidで音声を録音するのは簡単です。あなたがする必要があるのは:

1)メディアレコードクラスのオブジェクトを作成します:MediaRecorder recorder = new MediaRecorder();

2)エミュレータでは、記録したデータをメモリに保存できないため、SDカードに保存する必要があります。したがって、最初にSDカードの可用性を確認します。次に、次のコードで記録を開始します。

String status = Environment.getExternalStorageState();
if(status.equals("mounted")){
   String path = your path;
}

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(path);
recorder.prepare();
recorder.start();

3)停止するには、アクティビティの停止メソッドをオーバーライドします

 recorder.stop();
 recorder.release();
24
krupa parekh

これはサンプルコードを使った良いチュートリアルです。

オーディオキャプチャAndroid開発者

次の手順が含まれます。

  • Android.media.MediaRecorderの新しいインスタンスを作成します。
  • MediaRecorder.setAudioSource()を使用してオーディオソースを設定します。 MediaRecorder.AudioSource.MICを使用することをお勧めします。
  • MediaRecorder.setOutputFormat()を使用して出力ファイル形式を設定します。
  • MediaRecorder.setOutputFile()を使用して出力ファイル名を設定します。
  • MediaRecorder.setAudioEncoder()を使用してオーディオエンコーダーを設定します。
  • MediaRecorderインスタンスでMediaRecorder.prepare()を呼び出します。
  • オーディオキャプチャを開始するには、MediaRecorder.start()を呼び出します。
  • オーディオキャプチャを停止するには、MediaRecorder.stop()を呼び出します。
  • MediaRecorderインスタンスの使用が終了したら、MediaRecorder.release()を呼び出します。 MediaRecorder.release()を呼び出すことは、リソースをすぐに解放するために常に推奨されます。
5
Satch3000

基本的に、オーディオファイルを単純なWAVファイルとして書き込む簡単な方法はありません。 AudioRecorderは、生の線形PCM形式でデータを生成します。また、AndroidのAPIは、オーディオデータバッファーのみを提供します。

自分でWAVファイルを作成する必要があります。これが意味することは、すべてのチャンク(RIFFヘッダー、FMT、およびDATAチャンク)を自分で追加する必要があるということです。

2
inazaruk

私はAndroidでWAVファイルを録音しようとしました。しかし、どういうわけか、それは録音しているだけです。ステレオのみのWAVファイルであり、次のパラメータでオーディオレコーダーを使用する必要があります

recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
                        RECORDER_SAMPLERATE, AudioFormat.CHANNEL_IN_MONO,RECORDER_AUDIO_ENCODING, bufferSize);

        recorder.startRecording();

レコーダーから、すべてのデータを1つのファイルに書き込む必要があります。また、ヘッダー情報を提供する必要があります。

その後、

recorder.stopRecording();

しかし、AudioFormat.CHANNEL_IN_MONO..itを与えても、ステレオ形式で録音するという問題が1つだけあります。私の答えがお役に立てば幸いです。

1
User 1531343