zoukankan      html  css  js  c++  java
  • Android MediaRecorder录制音频

      今天介绍一下在Android中怎么录制音频,在Android中使用MediaRecorder来录制音频,步骤:

      1、创建MediaRecorder对象。

      2、调用MediaRecorder对象的setAudioSource()方法设置声音来源,一般传入MediaRecorder.AudioSource.MIC参数指定录制来在麦克风的声音。

      3、调用MediaRecorder对象的setOutputFormat()设置所录制的音频文件的格式。

      4、调用MediaRecorder对象的setAudioEncode()、setAudioEncodingBitRate(int bitRate)、setAudioSamplingRate(int samplingRate)设置所录制声音的编码格式、编码位率、采样率等,这些参数将可以控制所录制声音的品质、文件的大小。

      5、调用MediaRecorder对象的setOutputFile(String path)方法设置录制音频文件的保存位置。

      6、调用MediaRecorder的prepare()方法准备录制。

      7、调用MediaRecorder对象的start()方法开始录制。

      8、录制完成,调用MediaRecorder对象的stop()方法停止录制,并调用release()方法释放资源。

      下面上个例子:

     1 public class RecordSound extends Activity
     2     implements OnClickListener
     3 {
     4     // 程序中的两个按钮
     5     ImageButton record , stop;
     6     // 系统的音频文件
     7     File soundFile ;
     8     MediaRecorder mRecorder;
     9     @Override
    10     public void onCreate(Bundle savedInstanceState)
    11     {
    12         super.onCreate(savedInstanceState);
    13         setContentView(R.layout.main);
    14         // 获取程序界面中的两个按钮
    15         record = (ImageButton) findViewById(R.id.record);
    16         stop = (ImageButton) findViewById(R.id.stop);
    17         // 为两个按钮的单击事件绑定监听器
    18         record.setOnClickListener(this);
    19         stop.setOnClickListener(this);
    20     }
    21     @Override
    22     public void onDestroy()
    23     {
    24         if (soundFile != null && soundFile.exists())
    25         {
    26             // 停止录音
    27             mRecorder.stop();
    28             // 释放资源
    29             mRecorder.release();
    30             mRecorder = null;
    31         }
    32         super.onDestroy();
    33     }
    34     @Override
    35     public void onClick(View source)
    36     {
    37         switch (source.getId())
    38         {
    39             // 单击录音按钮
    40             case R.id.record:
    41                 if (!Environment.getExternalStorageState().equals(
    42                     android.os.Environment.MEDIA_MOUNTED))
    43                 {
    44                     Toast.makeText(RecordSound.this
    45                         , "SD卡不存在,请插入SD卡!"
    46                         , 5000)
    47                         .show();
    48                     return;
    49                 }
    50                 try
    51                 {
    52                     // 创建保存录音的音频文件
    53                     soundFile = new File(Environment
    54                         .getExternalStorageDirectory()
    55                         .getCanonicalFile() + "/sound.amr");
    56                     mRecorder = new MediaRecorder();
    57                     // 设置录音的声音来源
    58                     mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    59                     // 设置录制的声音的输出格式(必须在设置声音编码格式之前设置)
    60                     mRecorder.setOutputFormat(MediaRecorder
    61                         .OutputFormat.THREE_GPP);
    62                     // 设置声音编码的格式
    63                     mRecorder.setAudioEncoder(MediaRecorder
    64                         .AudioEncoder.AMR_NB);
    65                     mRecorder.setOutputFile(soundFile.getAbsolutePath());
    66                     mRecorder.prepare();
    67                     // 开始录音
    68                     mRecorder.start();
    69                 }
    70                 catch (Exception e)
    71                 {
    72                     e.printStackTrace();
    73                 }
    74                 break;
    75             // 单击停止按钮
    76             case R.id.stop:
    77                 if (soundFile != null && soundFile.exists())
    78                 {
    79                     // 停止录音
    80                     mRecorder.stop();
    81                     // 释放资源
    82                     mRecorder.release();
    83                     mRecorder = null;
    84                 }
    85                 break;
    86         }
    87     }
    88 }

      备注:记得添加相应的权限:

    1 <!-- 授予该程序录制声音的权限 -->
    2 <uses-permission android:name="android.permission.RECORD_AUDIO"/>
  • 相关阅读:
    解决IE6不支持position:fixed的bug
    响应式Web设计基础
    多行文本溢出显示省略号(…)全攻略
    解读CSS布局之-水平垂直居
    理解CSS中BFC
    七个你可能不了解的CSS单位
    屏蔽系统热键钩子Hook程序
    Win 2008 r2 远程桌面多用户登陆,一用户多登陆配置
    把Excel转换成DataTable,Excel2003+
    DataGridView不显示未绑定的列-AutoGenerateColumns
  • 原文地址:https://www.cnblogs.com/phj981805903/p/3297840.html
Copyright © 2011-2022 走看看