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();
}
}