[关闭]
@coder-pig 2015-11-22T17:00:02.000000Z 字数 2061 阅读 1773

Android基础入门教程——9.4 使用MediaRecord录音

Android基础入门教程


本节引言

本节是Android多媒体基本API调用的最后一节,带来的是MediaRecord的简单使用,
用法非常简单,我们写个例子来熟悉熟悉~


1.使用MediaRecord录制音频

运行结果

实现代码

布局代码:activity_main.xml

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. tools:context=".MainActivity">
  6. <Button
  7. android:id="@+id/btn_control"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:text="开始录音" />
  11. </RelativeLayout>

MainActivity.java

  1. public class MainActivity extends AppCompatActivity {
  2. private Button btn_control;
  3. private boolean isStart = false;
  4. private MediaRecorder mr = null;
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.activity_main);
  9. btn_control = (Button) findViewById(R.id.btn_control);
  10. btn_control.setOnClickListener(new View.OnClickListener() {
  11. @Override
  12. public void onClick(View v) {
  13. if(!isStart){
  14. startRecord();
  15. btn_control.setText("停止录制");
  16. isStart = true;
  17. }else{
  18. stopRecord();
  19. btn_control.setText("开始录制");
  20. isStart = false;
  21. }
  22. }
  23. });
  24. }
  25. //开始录制
  26. private void startRecord(){
  27. if(mr == null){
  28. File dir = new File(Environment.getExternalStorageDirectory(),"sounds");
  29. if(!dir.exists()){
  30. dir.mkdirs();
  31. }
  32. File soundFile = new File(dir,System.currentTimeMillis()+".amr");
  33. if(!soundFile.exists()){
  34. try {
  35. soundFile.createNewFile();
  36. } catch (IOException e) {
  37. e.printStackTrace();
  38. }
  39. }
  40. mr = new MediaRecorder();
  41. mr.setAudioSource(MediaRecorder.AudioSource.MIC); //音频输入源
  42. mr.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB); //设置输出格式
  43. mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB); //设置编码格式
  44. mr.setOutputFile(soundFile.getAbsolutePath());
  45. try {
  46. mr.prepare();
  47. mr.start(); //开始录制
  48. } catch (IOException e) {
  49. e.printStackTrace();
  50. }
  51. }
  52. }
  53. //停止录制,资源释放
  54. private void stopRecord(){
  55. if(mr != null){
  56. mr.stop();
  57. mr.release();
  58. mr = null;
  59. }
  60. }
  61. }

最后别忘了在AndroidManifest.xml中添加下述权限:

  1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  2. <uses-permission android:name="android.permission.RECORD_AUDIO"/>

好的,就是这么简单~


2.本节示例代码下载

RecordDemo.zip


本节小结:

好的,本节内容非常简单,就是MediaRecorder的使用而已,大概是整套教程中最精简的一节
了吧~嘿嘿~

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注