medalRecorder录制音频。

来源:互联网 发布:淘宝上的gucci是真的吗 编辑:程序博客网 时间:2024/05/29 14:17

使用medalRecorder录制音频。


手机一般都提供了麦克风硬件,而Android系统就可以利用该硬件来录制音频。
为了在Android应用中录制音频,Android提供了MediaRecorder类。使用MediaRecorder录制音频过程很简单,



1、创建MediaRecorder对象


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


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


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


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


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


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


8、录制完成,调用MediaRecorderMediaRecorder对象的stop方法定制录制,并调用release()方法来释放资源。
特别提醒,,3、4两个步骤千万不能搞反。否则程序将会抛出IllegalState Exception异常。



代码如下:

package com.example.mediarecorderdome.mediarecorderdome;


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;


import java.io.File;


public class MainActivity extends Activity implements OnClickListener
{
// 定义界面上的两个按钮
ImageButton record, stop;
// 系统的音频文件
File soundFile;
MediaRecorder mRecorder;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 获取程序界面中的两个按钮
record = (ImageButton) findViewById(R.id.record);
stop = (ImageButton) findViewById(R.id.stop);
// 为两个按钮的单击事件绑定监听器
record.setOnClickListener(this);
stop.setOnClickListener(this);
}
@Override
public void onDestroy()
{
super.onDestroy();
if (soundFile != null && soundFile.exists())
{
// 停止录音
mRecorder.stop();
// 释放资源
mRecorder.release();
mRecorder = null;
}
}
@Override
public void onClick(View source)
{
switch (source.getId())
{
// 单击录音按钮
case R.id.record:
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
Toast.makeText(MainActivity.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;
// 单击停止按钮
case R.id.stop:
if (soundFile != null && soundFile.exists())
{
// 停止录音
mRecorder.stop();  // ②
// 释放资源
mRecorder.release();  // ③
mRecorder = null;
}
break;
}
}
}



Dome下载地址:http://download.csdn.net/detail/bobo8945510/9611355

0 0