Android编程开发录音和播放录音简单示例
本文实例讲述了Android编程开发录音和播放录音的方法。分享给大家供大家参考,具体如下:
/*
*Theapplicationneedstohavethepermissiontowritetoexternalstorage
*iftheoutputfileiswrittentotheexternalstorage,andalsothe
*permissiontorecordaudio.Thesepermissionsmustbesetinthe
*application'sAndroidManifest.xmlfile,withsomethinglike:
*
*<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
*<uses-permissionandroid:name="android.permission.RECORD_AUDIO"/>
*
*/
packagecom.android.audiorecordtest;
importandroid.app.Activity;
importandroid.widget.LinearLayout;
importandroid.os.Bundle;
importandroid.os.Environment;
importandroid.view.ViewGroup;
importandroid.widget.Button;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.content.Context;
importandroid.util.Log;
importandroid.media.MediaRecorder;
importandroid.media.MediaPlayer;
importjava.io.IOException;
publicclassAudioRecordTestextendsActivity
{
privatestaticfinalStringLOG_TAG="AudioRecordTest";
privatestaticStringmFileName=null;
privateRecordButtonmRecordButton=null;
privateMediaRecordermRecorder=null;
privatePlayButtonmPlayButton=null;
privateMediaPlayermPlayer=null;
privatevoidonRecord(booleanstart){
if(start){
startRecording();
}else{
stopRecording();
}
}
privatevoidonPlay(booleanstart){
if(start){
startPlaying();
}else{
stopPlaying();
}
}
privatevoidstartPlaying(){
mPlayer=newMediaPlayer();
try{
mPlayer.setDataSource(mFileName);
mPlayer.prepare();
mPlayer.start();
}catch(IOExceptione){
Log.e(LOG_TAG,"prepare()failed");
}
}
privatevoidstopPlaying(){
mPlayer.release();
mPlayer=null;
}
privatevoidstartRecording(){
mRecorder=newMediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(mFileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try{
mRecorder.prepare();
}catch(IOExceptione){
Log.e(LOG_TAG,"prepare()failed");
}
mRecorder.start();
}
privatevoidstopRecording(){
mRecorder.stop();
mRecorder.release();
mRecorder=null;
}
classRecordButtonextendsButton{
booleanmStartRecording=true;
OnClickListenerclicker=newOnClickListener(){
publicvoidonClick(Viewv){
onRecord(mStartRecording);
if(mStartRecording){
setText("Stoprecording");
}else{
setText("Startrecording");
}
mStartRecording=!mStartRecording;
}
};
publicRecordButton(Contextctx){
super(ctx);
setText("Startrecording");
setOnClickListener(clicker);
}
}
classPlayButtonextendsButton{
booleanmStartPlaying=true;
OnClickListenerclicker=newOnClickListener(){
publicvoidonClick(Viewv){
onPlay(mStartPlaying);
if(mStartPlaying){
setText("Stopplaying");
}else{
setText("Startplaying");
}
mStartPlaying=!mStartPlaying;
}
};
publicPlayButton(Contextctx){
super(ctx);
setText("Startplaying");
setOnClickListener(clicker);
}
}
publicAudioRecordTest(){
mFileName=Environment.getExternalStorageDirectory().getAbsolutePath();
mFileName+="/audiorecordtest.3gp";
}
@Override
publicvoidonCreate(Bundleicicle){
super.onCreate(icicle);
LinearLayoutll=newLinearLayout(this);
mRecordButton=newRecordButton(this);
ll.addView(mRecordButton,
newLinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
0));
mPlayButton=newPlayButton(this);
ll.addView(mPlayButton,
newLinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
0));
setContentView(ll);
}
@Override
publicvoidonPause(){
super.onPause();
if(mRecorder!=null){
mRecorder.release();
mRecorder=null;
}
if(mPlayer!=null){
mPlayer.release();
mPlayer=null;
}
}
}
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android开发入门与进阶教程》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android操作SQLite数据库技巧总结》、《Android操作json格式数据技巧总结》、《Android数据库操作技巧总结》、《Android文件操作技巧汇总》、《Android编程开发之SD卡操作方法汇总》、《Android资源操作技巧汇总》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。