调用手机的麦克风录音,并播放。

看看录音的代码:

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     }

 

    

posted @ 2012-12-28 20:05  1小松  阅读(870)  评论(0编辑  收藏  举报