android开发(18) 调用手机的麦克风录音,并播放。

收到需求说要做语音通信,我去,要做个微信么,当然,我们做不到那个程度,先捣鼓下怎么录音吧。那么尝试做个示例。

 

看看录音的代码:

 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 提供的十分强大的封装。 

 ------

贴出我封装好的 录音 和播放的 类。

 

     class  SoundRecorder {   

 MediaRecorder mRecorder;

         boolean isRecording;

         public  void startRecording() {
            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();

        }

         public  void stopRecording() {
            mRecorder.stop();
            mRecorder.release();
            mRecorder =  null;
        }

         public String newFileName() {
            String mFileName = Environment.getExternalStorageDirectory()
                    .getAbsolutePath();

            String s =  new SimpleDateFormat("yyyy-MM-dd hhmmss")
                    .format( new Date());
             return mFileName += "/rcd_" + s + ".3gp";
        }
    }

 

     

       public   class  SoundPlayer {  

MediaPlayer mPlayer;


         public  void startPlaying(String fileName) {
            mPlayer =  new MediaPlayer();
             try {
                mPlayer.setDataSource(fileName);
                mPlayer.prepare();
                mPlayer.start();
            }  catch (IOException e) {
                Log.e(LOG_TAG, "prepare() failed");
            }
        }

         public  void stopPlaying() {
            mPlayer.release();
            mPlayer =  null;
        }
    }

 

 

最后,提供源代码下载。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值