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

看看录音的代码:

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     }

 

    

转载于:https://www.cnblogs.com/song336688/archive/2012/12/28/2837814.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值