Android之MediaRecorder录制音频

使用MediaRecorder录制音频

手机一般都提供麦克风硬件,而Android系统可以利用该硬件来录制音频了。

——使用MediaRecorder录制音频的步骤

 1)创建MediaRecorder对象

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

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

    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

 4)调用MediaRecorder对象的setAudioEncoder,setAudioEncodingBitRate(int)

   ,setAudioSamplingRate(int)设置录制的声音的编码格式,编码位率,采样率等。

   这些参数将可以控制所录制的声音的品质,文件的大小,一般声音品质越好,

   声音文件越大。

    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

 5)调用MediaRecorder对象的setOutputFile(String)设置录制文件的保存的位置。

 6)调用MediaRecorderprepare()方法准备录制

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

 8)录制完成,调用MediaRecorder对象的stop()方法停止录制,

  并调用release()方法释放资源。

注意:a)第三步和第四步不能搞反,否则会引发异常。

           b)需要的权限            

android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"

android:name="android.permission.WRITE_EXTERNAL_STORAGE"

android:name="android.permission.RECORD_AUDIO"

android:name="android.permission.READ_EXTERNAL_STORAGE"


代码编写:

1.布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开始录制"
        android:onClick="start" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="停止录制"
        android:onClick="stop" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="播放"
        android:onClick="play" />

</LinearLayout>

2.MainActivity:

public class MainActivity extends Activity {

	private MediaRecorder mediaRecorder;
	private MediaPlayer mediaPlayer;
	
	public void start(View view){
		mediaRecorder.start();
		Toast.makeText(MainActivity.this, "开始录制", 0).show();
	}
	
	public void stop(View view)
	{
		mediaRecorder.stop();
		mediaRecorder.release();//释放资源
		Toast.makeText(MainActivity.this, "录制完成", 0).show();
	}
	
	public void play(View view)
	{
		try {
			String path=Environment.getExternalStorageDirectory().
					getAbsolutePath()+"/3.amr";
			mediaPlayer.setDataSource(path);
			mediaPlayer.prepare();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		mediaPlayer.start();
	}
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		mediaPlayer=new MediaPlayer();
		
		//通过MediaRecorder录制音频
		//1.创建
		mediaRecorder=new MediaRecorder();
		//2.调用MediaRecorder对象的方法来设置声音来源
		mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
		//3.设置录制的音频格式
		mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
		//4.设置编码格式
		mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
		//5.设置保存路径
		mediaRecorder.setOutputFile
		(Environment.getExternalStorageDirectory().
				getAbsolutePath()+"/3.amr");
		//6.进入准备录制的状态
		try {
			mediaRecorder.prepare();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}

}

效果图我就不贴了,但是效果还不错,可以录制音频,也可以播放~



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值