2011-07-07 14 views
0

私は、ユーザーの声を録音してMediaRecorderとAudioTrackを使用して同じアクティビティで再生できる場所にしたいと考えています。 AudioTrackにファイルを書き込む方法が分かりません。私は両方の文書を読んだだけで、それを理解することはできません。どんな助けもありがとう。ここまでは私のコードですが、完全ではありません。読み込む必要のあるボタンは、recordButtonとplaybackButtonだけです。ありがとう!Android MediaRecorder to Audioトラック、録音、再生

private File outputFile = null; 
private AudioTrack voice = null; 
private MediaRecorder recorder = null; 
.... 
     // Setup recorder... 
    recorder = new MediaRecorder(); 
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
    // Setup record file... 
    outputFile = getFileStreamPath("output.amr"); 
    recorder.setOutputFile(outputFile.getAbsolutePath()); 
public void onClick(View v){ 
    switch(v.getId()) { 
    case R.id.next_button: 
     giveSentence(); 
     break; 
    case R.id.repeat_button: 
//   playSentence(); 
     break; 
    case R.id.recordButton: 
     if (!recording){ 
     recordButton2.setBackgroundResource(android.R.drawable.button_onoff_indicator_on); 
      recording = true; 
      recorder.reset(); 
      recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
      recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
      recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
      recorder.setOutputFile(outputFile.getAbsolutePath()); 
      try { 
       recorder.prepare(); 
      } catch (IllegalStateException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      recorder.start(); 
     } 
     else if(recording) { 
        recordButton2.setBackgroundResource(android.R.drawable.button_onoff_indicator_off); 
      recording = false; 
      recorder.stop(); 
     } 
     break; 
    case R.id.playbackButton: 
     Music.playSentence(this, outputFile); 
     break; 
    case R.id.slowButton: 
     if(!slowedSpeech) { 
      slowButton2.setBackgroundResource(android.R.drawable.ic_dialog_alert); 
      slowedSpeech = true; 
//    slowspeech(); 
     } 
     else if(slowedSpeech) { 
      slowButton2.setBackgroundResource(android.R.drawable.ic_menu_recent_history); 
      slowedSpeech = false; 
//    noSlowSpeech(); 
     } 
     break; 
    } 
} 
+0

[AudioRecord](http://developer.android.com/reference/android/media/AudioRecord.html)を使用してサンプルレート、チャンネル設定、フォーマットを設定しようとしましたか?次に、AudioTrackで使用するパラメータがわかります。 – Vanja

答えて

0

ファイルをオーディオトラックに書き込むことはどういう意味ですか?オーディオトラックにファイルを書き込む必要はありません。オーディオソースを設定すると、レコーダはオーディオトラックを作成し、オーディオソースからpcmデータを読み込み、エンコーダでデータを書き出し、出力ファイルに書き込みます。

+0

私は、MediaRecorderを使用してオーディオを録音し、そのファイルをAudioTrackに入れて再生できるようにしようとしています – lespommes

関連する問題