Android 录音功能(语音录制保存,播放)
2015-08-10 18:12
821 查看
// 音量,各个音量的图片 private int[] mVolumeImage = { R.drawable.record_animate01_icon, R.drawable.record_animate02_icon, R.drawable.record_animate03_icon, R.drawable.record_animate04_icon, R.drawable.record_animate05_icon, R.drawable.record_animate06_icon, R.drawable.record_animate07_icon, R.drawable.record_animate08_icon, R.drawable.record_animate09_icon, R.drawable.record_animate10_icon }; // 语音操作对象 private MediaPlayer mPlayer = null; private MediaRecorder mRecorder = null; //录音文件保存路径 private String FileName = FileManager.getSaveImagePath() + "temp.3gp";
开始录音,并保存到手机
private void startRecording() { //创建保存的路径文件 FileHelper.createDirectory(FileManager.getSavePath()); File file = new File(FileName); if (file.exists()) { if (file.delete()) try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } else { try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } mRecorder = new MediaRecorder(); //录音配置 mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //输出文件 mRecorder.setOutputFile(FileName); mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); try { mRecorder.prepare(); } catch (IOException e) { e.printStackTrace(); } //开始录音 mRecorder.start(); //音量图片显示 updateMicStatus(); //录音时间计时 timingRecord(); }
//音量图片显示
updateMicStatus();
private final Handler mHandler = new Handler(); private Runnable mUpdateMicStatusTimer = new Runnable() { public void run() { updateMicStatus(); } }; private int BASE = 1; private int SPACE = 100;// 间隔取样时间 private void updateMicStatus() { if (mRecorder != null) { double ratio = (double) mRecorder.getMaxAmplitude() / BASE; double db = 0;// 分贝 if (ratio > 1) db = 20 * Math.log10(ratio); int level = ((int) db - 40) / 10; level = level < 0 ? 0 : level; level = level > 9 ? 9 : level; //根据分贝控件音量显示的图片 mRecordingVolume.setImageResource(mVolumeImage[level]); //循环显示 mHandler.postDelayed(mUpdateMicStatusTimer, SPACE); } }
停止录音
private void stopRecording() { if (mRecorder != null) { mRecorder.stop(); mRecorder.release(); mRecorder = null; } }
播放录音
private void playRecording() { mPlayer = new MediaPlayer(); try { mPlayer.setDataSource(FileName); mPlayer.prepare(); mPlayer.start(); //播放时间显示 timingPlay(); } catch (IOException e) { e.printStackTrace(); } }
停止播放
private void stopRecording() { if (mRecorder != null) { mRecorder.stop(); mRecorder.release(); mRecorder = null; } }
相关文章推荐
- 星云测试- Android应用深度体检专业平台
- Android基 4000 础:Service及其生命周期介绍
- 让Android Support V4中的SwipeRefreshLayout支持上拉加载更多
- Android 为PopupWindow设置动画效果
- Android Animation动画(很详细)
- android屏幕适配不同的资源图片、布局
- Android多媒体框架分析-AudioFlinger
- Android里面怎么让界面居中
- Android运行时异常“Binary XML file line # : Error inflating class”
- Android中的图片资源
- Android Dialog 系统样式讲解及透明背景
- Android Sqlite数据库增删改查操作
- Android动画Animation的两种加载执行方式
- android用SP,判断是否过了一天
- user interface, view 和activity究竟是啥?
- Activity重要知识总结
- Android处子Demo—简易的UC首页动画
- 文章标题
- 【Android进阶篇】自定义应用权限
- Arcgis Android 坐标转换