mediarecoder 安卓_【Android 多媒体应用】使用MediaRecoder录制,MediaPlayer播放音频数据...

importandroid.annotation.TargetApi;importandroid.app.Activity;importandroid.media.AudioManager;importandroid.media.MediaPlayer;importandroid.media.MediaRecorder;importandroid.os.Build;importandroid.os.Bundle;importandroid.os.Environment;importandroid.os.Handler;importandroid.os.Message;importandroid.util.Log;importandroid.view.View;importandroid.widget.Button;importandroid.widget.TextView;importandroid.widget.Toast;importjava.io.File;importjava.io.IOException;public class MainActivity extends Activity implementsView.OnClickListener {private final static String TAG = "debug--";privateButton btnRecord,btnStop,btnPlay;privateFile soundFile;privateMediaRecorder mRecoder;privateMediaPlayer mPlayer;privateTextView mTxt ;private Handler handler = newHandler(){public voidhandleMessage(Message msg) {

Log.d(TAG, Integer.toString(msg.what));

mTxt.setText(msg.what/60+":"+msg.what%60);super.handleMessage(msg);

}

};

@Overridepublic voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

btnRecord=(Button)findViewById(R.id.start);

btnStop=(Button)findViewById(R.id.stop);

btnPlay=(Button)findViewById(R.id.play);

mTxt=(TextView)findViewById(R.id.txtTime);

btnRecord.setOnClickListener(this);

btnStop.setOnClickListener(this);

btnPlay.setOnClickListener(this);

}public voidonDestroy() {super.onDestroy();if((mRecoder != null) && (soundFile !=null) &&(soundFile.exists())) {

mRecoder.stop();

mRecoder.release();

mRecoder= null;

}

}

@Overridepublic voidonClick(View v)

{switch(v.getId())

{caseR.id.start:if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))

{

Toast.makeText(MainActivity.this,"check SD Card Faild!",Toast.LENGTH_SHORT).show();return;

}try{

soundFile= new File("sdcard/sound.amr");

mRecoder= newMediaRecorder();

mRecoder.setAudioSource(MediaRecorder.AudioSource.MIC);

mRecoder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);

mRecoder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

mRecoder.setOutputFile(soundFile.getAbsolutePath());

mRecoder.prepare();

mRecoder.start();

showRecordTime();

Log.d(TAG,"start");

Toast.makeText(MainActivity.this,"start Recording!",Toast.LENGTH_SHORT).show();

}catch(IOException e) {

e.printStackTrace();

}break;caseR.id.stop:if(soundFile != null &&soundFile.exists())

{

mRecoder.stop();

mRecoder.release();

mRecoder= null;

Log.d(TAG,"stop");

Toast.makeText(MainActivity.this,"Stop Recording!",Toast.LENGTH_SHORT).show();

}break;caseR.id.play:

{

Log.d(TAG,btnPlay.getText().toString());if (btnPlay.getText().toString().equalsIgnoreCase("Play") ) {

Log.d(TAG,"play@@@@@@@");

mPlayer= newMediaPlayer();try{

mPlayer.setDataSource("sdcard/sound.amr");

mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

mPlayer.prepare();

mPlayer.start();

btnPlay.setText("Stop");

}catch(IOException e) {

e.printStackTrace();

}

}else if (btnPlay.getText().toString().equalsIgnoreCase("Stop") )

{if(mPlayer != null)

{

mPlayer.stop();

mPlayer.release();

btnPlay.setText("Play");

}

}

}break;

}

}private voidshowRecordTime() {new Thread(newRunnable() {

@Overridepublic voidrun() {int time_sec = 0;while(mRecoder != null)

{try{

Thread.sleep(1000);

Message message= newMessage();

time_sec+=1;

message.what=time_sec ;

handler.sendMessage(message);

}catch(InterruptedException e) {

e.printStackTrace();

}

}

}

}).start();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值