您的位置:首页 > 移动开发 > Android开发

android多媒体部分学习笔记七------音频录制 mediaRecorder

2012-09-08 16:13 816 查看
/**

* 自定义捕获音频

*

* @time 下午12:58:03

* @author retacn yue

* @Email zhenhuayue@sina.com

*/

@SuppressWarnings("unused")

public class CustomRecorderActivity extends Activity implements OnCompletionListener, OnClickListener {

private Button btn_finish, btn_play, btn_start_record, btn_stop_record;

private TextView txt_status;

private MediaRecorder mediaRecorder;

private File audioFile;

private MediaPlayer player;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.custom_recoder);

findView();

}

/**

* 实例化控件

*/

private void findView() {

btn_start_record = (Button) this.findViewById(R.id.btn_start_recording);

btn_stop_record = (Button) this.findViewById(R.id.btn_stop_recording);

btn_play = (Button) this.findViewById(R.id.btn_paly_record);

btn_finish = (Button) this.findViewById(R.id.btn_finish);

txt_status = (TextView) this.findViewById(R.id.txt_status);

txt_status.setText("Ready");

btn_start_record.setOnClickListener(this);

btn_stop_record.setOnClickListener(this);

btn_play.setOnClickListener(this);

btn_finish.setOnClickListener(this);

btn_play.setEnabled(false);

btn_stop_record.setEnabled(false);

}

@Override

public void onClick(View v) {

if (v == btn_start_record) {

mediaRecorder = new MediaRecorder();

// 设置输入信号源

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

// 设置输出格式

/**

* 常见格式:

*

* THREE_GPP

*

* MPEG_4

*

* RAW_AMR

*

*/

mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

// 设置解码格式

mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

// 创建目录

File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Andoroid/data/cn.yue.mrdemo.CustomRecorderActivity/files/");

file.mkdirs();

try {

audioFile = File.createTempFile("recording", ".3gp", file);

} catch (IOException e) {

e.printStackTrace();

}

// 设置输出文件的路径

mediaRecorder.setOutputFile(audioFile.getAbsolutePath());

try {

mediaRecorder.prepare();

} catch (IllegalStateException e) {

e.printStackTrace();

Log.i("tag", "error: " + e.toString());

} catch (IOException e) {

e.printStackTrace();

Log.i("tag", "error: " + e.toString());

}

mediaRecorder.start();

txt_status.setText("Recording");

btn_play.setEnabled(false);

btn_stop_record.setEnabled(true);

btn_start_record.setEnabled(false);

} else if (v == btn_stop_record) {

// 停止录音释放资源

mediaRecorder.stop();

mediaRecorder.release();

// 初始化播放器

player = new MediaPlayer();

player.setOnCompletionListener(this);

// 设置播放器数据源

try {

player.setDataSource(audioFile.getAbsolutePath());

} catch (IllegalArgumentException e) {

e.printStackTrace();

} catch (IllegalStateException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

try {

player.prepare();

} catch (IllegalStateException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

txt_status.setText("Ready to play");

btn_play.setEnabled(true);

btn_stop_record.setEnabled(false);

btn_start_record.setEnabled(true);

} else if (v == btn_play) {

player.start();

txt_status.setText("Playing");

btn_play.setEnabled(false);

btn_start_record.setEnabled(false);

btn_stop_record.setEnabled(false);

} else if (v == btn_finish) {

// 退出程序

finish();

}

}

@Override

public void onCompletion(MediaPlayer mp) {

btn_start_record.setEnabled(true);

btn_stop_record.setEnabled(false);

btn_play.setEnabled(true);

txt_status.setText("Ready");

}

/**

* 其他常用方法

*

*/

private void otherMathod() {

// 最大录制文件的大小

mediaRecorder.setMaxFileSize(10);

// 录制最长时间

mediaRecorder.setMaxDuration(1);

}

/**

* 将音频插入mediaStore

*/

private void insertMediaStore() {

// 添加元数据

ContentValues contentValues = new ContentValues();

contentValues.put(MediaStore.MediaColumns.TITLE, "this is not music");

contentValues.put(MediaStore.MediaColumns.DATE_ADDED, System.currentTimeMillis());

contentValues.put(MediaStore.MediaColumns.DATA, audioFile.getAbsolutePath());

Uri uri = getContentResolver().insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, contentValues);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: