package at.tugraz.ist.musicdroid;
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.IOException;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
public class PlaySoundActivity extends Activity {
public static MediaPlayer mp_;
private short state_ = 0;// stopped
private Button but_paus_res_;
private Handler handler = new Handler();
public String getFileNameForViewing(String filename_path) {
String file = "";
String[] splittArray = filename_path.split("/");
file = splittArray[splittArray.length - 1];
return file;
}
@Override
public void onCreate(Bundle savedInstanceState) {
System.out.println("On Create!");
super.onCreate(savedInstanceState);
setContentView(R.layout.play_sound);
TextView filltextview = new TextView(this);
filltextview = (TextView) findViewById(R.id.name_of_soundfile);
filltextview.setText(getFileNameForViewing(getIntent().getExtras()
.getString("filename")));
but_paus_res_ = (Button) findViewById(R.id.pauseResumeButton);
mp_ = new MediaPlayer();
mp_.setOnPreparedListener(new OnPreparedListener() {
ProgressBar progressbar = (ProgressBar) findViewById(R.id.soundfile_timeline);
public void onPrepared(final MediaPlayer mp) {
progressbar.setMax(mp.getDuration());
new Thread(new Runnable() {
public void run() {
while (mp != null
&& mp.getCurrentPosition() < mp.getDuration()) {
progressbar.setProgress(mp.getCurrentPosition());
Message msg = new Message();
int millis = mp.getCurrentPosition();
msg.obj = millis / 1000;
handler.sendMessage(msg);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
});
initFile(getIntent().getExtras().getString("filename"));
}
public static void initFile(String filename) {
System.out.println("initFile");
FileInputStream fis;
try {
// TODO Pfad als Parameter setzen
fis = new FileInputStream(new File(filename));
FileDescriptor fileDescriptor = fis.getFD();
mp_.setDataSource(fileDescriptor);
fis.close();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
mp_.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void onPlay(View v) {
if (mp_ != null) {
if (state_ == 2) {
mp_.start();
state_ = 1;
} else {
if (!mp_.isPlaying()) {
mp_.seekTo(0);
mp_.start();
state_ = 1;
}
}
}
}
public void on_pause_resume(View v) {
if (mp_ != null) {
if (mp_.isPlaying()) {
if (state_ == 1) {
mp_.pause();
state_ = 2;
}
}
}
}
public void onStop(View v) {
if (mp_ != null) {
if (state_ == 1 || state_ == 2) {
if (state_ == 1)
mp_.pause();
state_ = 0;
mp_.seekTo(0);
}
}
}
@Override
public void onBackPressed() {
if (mp_ != null) {
if (mp_.isPlaying())
mp_.stop();
mp_.reset();
}
this.finish();
super.onBackPressed();
}
public static MediaPlayer getMP() {
return mp_;
}
@Override
public void onDestroy() {
mp_.release();
super.onDestroy();
}
}