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

    使用MediaRecorder录制音频步骤:

    创建MediaRecorder对象

    调用MediaRecorder的setAudioSource()方法设置声音来源。一般传入MediaRecorder.AudioSource.MIC參数指定录制来自麦克风的声音

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

    调用MediaRecorder对象的setAudioEncoder() ,setAudioEncodingBitRate(int bitRate),setAudioSamplingRate(int samplingRate)设置所录制的声音的编码格式。编码位率,採

    样率等。这些參数将能够控制所录制的声音的品质,文件的大小 ,一般来说品质越好,声音文件越大

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

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

    调用MediaRecorder对象的start()方法開始录制

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

    例如以下:

    MediaRecorder recorder = new MediaRecorder();
     recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
     recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
     recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
     recorder.setOutputFile(PATH_NAME);
     recorder.prepare();
     recorder.start();   // Recording is now started
     ...
     recorder.stop();
     recorder.reset();   // You can reuse the object by going back to setAudioSource() step
     recorder.release(); // Now the object cannot be reused


    样例程序:

    Activity:

    import java.io.File;
    
    import android.app.Activity;
    import android.media.MediaRecorder;
    import android.os.Bundle;
    import android.os.Environment;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.ImageButton;
    import android.widget.Toast;
    
    public class RecordSound extends Activity
    	implements OnClickListener
    {
    	// 定义界面上的两个button
    	ImageButton record, stop;
    	// 系统的音频文件
    	File soundFile;
    	MediaRecorder mRecorder;
    
    	@Override
    	public void onCreate(Bundle savedInstanceState)
    	{
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		// 获取程序界面中的两个button
    		record = (ImageButton) findViewById(R.id.record);
    		stop = (ImageButton) findViewById(R.id.stop);
    		// 为两个button的单击事件绑定监听器
    		record.setOnClickListener(this);
    		stop.setOnClickListener(this);
    	}
    
    	@Override
    	public void onDestroy()
    	{
    		if (soundFile != null && soundFile.exists())
    		{
    			// 停止录音
    			mRecorder.stop();
    			// 释放资源
    			mRecorder.release();
    			mRecorder = null;
    		}
    		super.onDestroy();
    	}
    
    	@Override
    	public void onClick(View source)
    	{
    		switch (source.getId())
    		{
    		// 单击录音button
    			case R.id.record:
    				if (!Environment.getExternalStorageState().equals(
    					android.os.Environment.MEDIA_MOUNTED))
    				{
    					Toast.makeText(RecordSound.this, "SD卡不存在,请插入SD卡!

    ", Toast.LENGTH_SHORT).show(); return; } try { // 创建保存录音的音频文件 soundFile = new File(Environment .getExternalStorageDirectory().getCanonicalFile() + "/sound.amr"); mRecorder = new MediaRecorder(); // 设置录音的声音来源 mRecorder.setAudioSource(MediaRecorder .AudioSource.MIC); // 设置录制的声音的输出格式(必须在设置声音编码格式之前设置) mRecorder.setOutputFormat(MediaRecorder .OutputFormat.THREE_GPP); // 设置声音编码的格式 mRecorder.setAudioEncoder(MediaRecorder .AudioEncoder.AMR_NB); mRecorder.setOutputFile(soundFile.getAbsolutePath()); mRecorder.prepare(); // 開始录音 mRecorder.start(); //① } catch (Exception e) { e.printStackTrace(); } break; // 单击停止button case R.id.stop: if (soundFile != null && soundFile.exists()) { // 停止录音 mRecorder.stop(); //② // 释放资源 mRecorder.release(); //③ mRecorder = null; } break; } } }


    清单文件:

    	<!-- 授予该程序录制声音的权限 -->
    	<uses-permission android:name="android.permission.RECORD_AUDIO" />
    	<!-- 授予该程序向外部存储器写入数据的权限 -->
    	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


  • 相关阅读:
    PHP保留两位小数的几种方法
    解决PHP下载大文件失败,并限制下载速度
    MySQL索引
    商城商品部分-数据表创建
    string 函数
    array函数
    BTREE这种Mysql默认的索引方式,具有普遍的适用性
    mysql索引类型 normal, unique, full text
    typedef的意义和函数指针
    35. 搜索插入位置-7月17日
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5263073.html
Copyright © 2011-2022 走看看