首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 音频录制与播放

Android 音频录制与播放

作者头像
码客说
发布2019-10-22 14:34:52
1.7K0
发布2019-10-22 14:34:52
举报
文章被收录于专栏:码客码客码客

音频录制

录制

private MediaRecorder mMediaRecorder;
private void startRecord(){
   if (mMediaRecorder == null){
       mMediaRecorder = new MediaRecorder();
       mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
       mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
       mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
       File file = new File(Environment.getExternalStorageDirectory().getPath(), "hello.log");
       if (!file.exists()) {
           try {
               file.createNewFile();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
       mMediaRecorder.setOutputFile(file.getAbsolutePath());
       mMediaRecorder.setMaxDuration(1000 * 60 * 10);
       try {
           mMediaRecorder.prepare();
       } catch (IOException e) {
           e.printStackTrace();
       }
       mMediaRecorder.start();
   }
   
   handler.postDelayed(runnable, 200);
}

停止录制

private void stopRecord(){
   handler.removeCallbacks(runnable);
   mMediaRecorder.stop();
   mMediaRecorder.release();
   mMediaRecorder = null;
}

每200毫秒反复调用 获取声音大小

Handler handler=new Handler();
Runnable runnable=new Runnable() {
   @Override
   public void run() {
       //要做的事情
       if(mMediaRecorder==null) return;
       double ratio = (double) mMediaRecorder.getMaxAmplitude() / 100;
       double db = 0;// 分贝
       //默认的最大音量是100,可以修改,但其实默认的,在测试过程中就有不错的表现
       //你可以传自定义的数字进去,但需要在一定的范围内,比如0-200,就需要在xml文件中配置maxVolume
       //同时,也可以配置灵敏度sensibility
       if (ratio > 1)
           db = 30 * Math.log10(ratio);
        //设置声波大小
       soundWaveViewLeft.setVolume((float)db);
       soundWaveViewRight.setVolume((float)db);
       //只要有一个线程,不断调用这个方法,就可以使波形变化
       //主要,这个方法必须在ui线程中调用
       handler.postDelayed(this, 200);
   }
};

音频播放

1、从资源文件中播放

MediaPlayer   player  =   new MediaPlayer.create(this,R.raw.test);
player.start();

2、从文件系统播放

MediaPlayer player = new MediaPlayer();
String path = "/sdcard/test.mp3";
player.setDataSource(path);
player.prepare();
player.start();

3、从网络播放

(1)通过URI的方式:

String path="http://**************.mp3";     //这里给一个歌曲的网络地址就行了
Uri  uri  =  Uri.parse(path);
MediaPlayer player = new MediaPlayer.create(this,uri);
player.start();

(2)通过设置数据源的方式:

MediaPlayer player = new MediaPlayer.create();
String path="http://**************.mp3";          //这里给一个歌曲的网络地址就行了
player.setDataSource(path);
player.prepare();
player.start();
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 音频录制
  • 音频播放
    • 1、从资源文件中播放
      • 2、从文件系统播放
        • 3、从网络播放
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档