2010-04-02 99 views

回答

3

對於錄製Android可以使用android.media.MediaRecorder。本頁列出了所有API http://developer.android.com/reference/android/media/MediaRecorder.html。這應該可以解決你所有的問題。 示例代碼

MediaRecorder recorder = new MediaRecorder(); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
recorder.setOutputFile(PATH_NAME); 
recorder.prepare(); 
recorder.start(); // Recording is now started 
... 
while(recordingNotOver) 
{ 
    int lastMaxAmplitude = recorder.getMaxAmplitude(); 
    // you have the value here in lastMaxAmplitude, do what u want to 
} 

recorder.stop(); 
recorder.reset(); // You can reuse the object by going back to setAudioSource() step 
recorder.release(); // Now the object cannot be reused 
+0

謝謝,我也我發現這個開源項目http://code.google.com/p/moonblink/wiki/Audalyzer – Jimmy 2010-04-04 04:52:12

1

我把一些代碼。

這是主類。

final AudioRecorder recorder = new AudioRecorder("/calls"); 
    try { 
     recorder.start(); 
     try { 
      this.wait(10000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     recorder.stop(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    } 
} 

和輔助類:

public class AudioRecorder { 

    final MediaRecorder recorder = new MediaRecorder(); 
    final String path; 

    public AudioRecorder(String path) { 

    this.path = sanitizePath(path); 
    } 

    private String sanitizePath(String path) { 
    if (!path.startsWith("/")) { 
     path = "/" + path; 
    } 
    if (!path.contains(".")) { 
     path += ".3gp"; 
    } 

//This is the command I would like to change, because I want to save the audio 
//files in the internal memory instead of the SD card 

    return Environment.getDataDirectory().getAbsolutePath() + path; 
    } 

    public void start() throws IOException { 
    String state = android.os.Environment.getExternalStorageState(); 
    if(!state.equals(android.os.Environment.MEDIA_MOUNTED)) { 
     throw new IOException("SD Card is not mounted. It is " + state + "."); 
    } 

    // make sure the directory we plan to store the recording in exists 
    File directory = new File(path).getParentFile(); 
    if (!directory.exists() && !directory.mkdirs()) { 
     throw new IOException("Path to file could not be created."); 
    } 

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

    public void stop() throws IOException { 
    recorder.stop(); 
    recorder.release(); 
    } 
}