调用手机的麦克风录音,并播放。
看看录音的代码:
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(newFileName());
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
mRecorder.prepare();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
mRecorder.start();
代码的大概过程有:
1。设定声音来源。这里指定为 麦克风
2。指定输出格式 。
3。指定输出文件。
4. 指定音频编码格式。
5. 预备。
6. 启动录音。
配合启动录音的过程,就会有终止录音的过程,代码:
mRecorder.stop();
mRecorder.release();
mRecorder = null;
结束,并释放资源。
---------
录音完成后,总得要听听吧。我们看播放的过程:
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(fileName);
mPlayer.prepare();
mPlayer.start();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
这个,太简单了把。指定个数据源(要播放的文件)就可以了。
那么如何终止播放呢?
mPlayer.release();
mPlayer = null;
好吧。我承认。这一切都太简单了。android 提供的十分强大的封装。
------
贴出我封装好的 录音 和播放的 类。
1 class SoundRecorder { 2 3 MediaRecorder mRecorder; 4 5 boolean isRecording; 6 7 public void startRecording() { 8 mRecorder = new MediaRecorder(); 9 mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 10 mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 11 mRecorder.setOutputFile(newFileName()); 12 mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 13 try { 14 mRecorder.prepare(); 15 } catch (IOException e) { 16 Log.e(LOG_TAG, "prepare() failed"); 17 } 18 mRecorder.start(); 19 20 } 21 22 public void stopRecording() { 23 mRecorder.stop(); 24 mRecorder.release(); 25 mRecorder = null; 26 } 27 28 public String newFileName() { 29 String mFileName = Environment.getExternalStorageDirectory() 30 .getAbsolutePath(); 31 32 String s = new SimpleDateFormat("yyyy-MM-dd hhmmss") 33 .format(new Date()); 34 return mFileName += "/rcd_" + s + ".3gp"; 35 } 36 }
1 public class SoundPlayer { 2 3 MediaPlayer mPlayer; 4 5 6 public void startPlaying(String fileName) { 7 mPlayer = new MediaPlayer(); 8 try { 9 mPlayer.setDataSource(fileName); 10 mPlayer.prepare(); 11 mPlayer.start(); 12 } catch (IOException e) { 13 Log.e(LOG_TAG, "prepare() failed"); 14 } 15 } 16 17 public void stopPlaying() { 18 mPlayer.release(); 19 mPlayer = null; 20 } 21 }