package greendrm.playmp3;
import java.io.IOException;
import android.app.Activity;
import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.SeekBar;
import android.widget.TextView;
public class PlayMp3Activity extends Activity {
private static final boolean DEBUG = true;
private static final String TAG = "PlayMp3";
MediaPlayer audio_play = null;
final String sampleMp3 =
"http://www.archive.org/download/SteveJobsSpeechAtStanfordUniversity/SteveJobsSpeech_64kb.mp3";
SeekBar seekbar;
TextView textviewStart, textviewStop;
Thread thread;
boolean isPlaying = false;
boolean isThreadRunning = true;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if (DEBUG) Log.d(TAG, "onCreate()");
seekbar = (SeekBar)findViewById(R.id.seekBar1);
textviewStart = (TextView)findViewById(R.id.textViewStart);
textviewStop = (TextView)findViewById(R.id.textViewStop);
isPlaying = false;
isThreadRunning = true;
UpdateProgress updateProgress = new UpdateProgress();
thread = new Thread(updateProgress);
thread.start();
}
@Override
protected void onDestroy() {
if (DEBUG) Log.d(TAG, "onDestroy()");
isThreadRunning = false;
if (audio_play != null) {
try {
audio_play.stop();
audio_play.release();
}
catch (Exception e) {
//
}
}
super.onDestroy();
}
public void onClickPlay(View v) {
switch (v.getId()) {
case R.id.buttonPlay1:
playMp3(0);
break;
case R.id.buttonPlay2:
playMp3(1);
break;
case R.id.buttonPlay3:
playMp3(2);
break;
}
}
public void onClickStop(View v) {
if (audio_play != null) {
isPlaying = false;
try {
audio_play.stop();
audio_play.release();
}
catch (Exception e) {
//
}
}
}
public void playMp3(int id) {
if (isPlaying)
return;
switch (id) {
case 0:
audio_play = MediaPlayer.create(getBaseContext(), Uri.parse(sampleMp3));
audio_play.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
isPlaying = false;
}
});
if (!audio_play.isPlaying()) {
setDuratinSeekBar(audio_play.getDuration());
audio_play.start();
isPlaying = true;
}
break;
case 1:
AssetFileDescriptor afd;
audio_play = new MediaPlayer();
audio_play.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
isPlaying = false;
}
});
try {
afd = getAssets().openFd("number_song.mp3");
audio_play.setDataSource(afd.getFileDescriptor(),
afd.getStartOffset(), afd.getLength());
audio_play.prepare();
setDuratinSeekBar(audio_play.getDuration());
audio_play.start();
isPlaying = true;
afd.close();
}
catch (IOException e) {
e.printStackTrace();
}
break;
case 2:
audio_play = MediaPlayer.create(getBaseContext(),
R.raw.three_bears);
audio_play.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
isPlaying = false;
}
});
Log.d(TAG, "duration: " + audio_play.getDuration());
setDuratinSeekBar(audio_play.getDuration());
audio_play.start();
isPlaying = true;
break;
}
}
class UpdateProgress implements Runnable {
@Override
public void run() {
while (isThreadRunning) {
if (audio_play != null) {
if (isPlaying) {
try {
seekbar.setProgress(audio_play.getCurrentPosition());
}
catch (Exception e) {
//
}
}
else {
seekbar.setProgress(0);
}
}
try {
Thread.sleep(500);
}
catch (Exception e){
//
}
}
}
}
public void setDuratinSeekBar(int duration) {
int sec;
sec = duration / 1000;
seekbar.setMax(duration);
textviewStop.setText(new Integer(sec).toString());
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
if (DEBUG) Log.d(TAG, "onStart()");
super.onStart();
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
if (DEBUG) Log.d(TAG, "onRestart()");
super.onRestart();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
if (DEBUG) Log.d(TAG, "onResume()");
super.onResume();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
if (DEBUG) Log.d(TAG, "onPause()");
super.onPause();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
if (DEBUG) Log.d(TAG, "onStop()");
super.onStop();
}
}