Android中的默认录制语音

我注意到Android默认录音机可以感知你的声音有多大,并在UI参数中显示给你 。

我可以从意图中使用它,或者我如何编写能够感知Android中语音响度的代码。

对于录制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 

我把一些代码。

这是主要的课程。

  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(); } }