package info.guardianproject.util;
import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
import android.widget.Toast;
public class AudioPlayer {
private static final String TAG = "AudioPlayer";
private Context mContext;
private String mFileName;
private String mMimeType;
private MediaPlayer mediaPlayer;
private HttpMediaStreamer streamer;
public AudioPlayer(Context context, String fileName, String mimeType) {
mContext = context.getApplicationContext();
mFileName = fileName;
mMimeType = mimeType;
}
public void play() {
try {
initPlayer();
} catch (Exception e) {
Toast.makeText(mContext, e.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
}
}
public void pause() {
killPlayer();
}
private void killPlayer() {
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer = null;
}
if (streamer != null) {
streamer.destroy();
streamer = null;
}
}
private void initPlayer() throws Exception {
streamer = new HttpMediaStreamer(mFileName, mMimeType);
Uri uri = streamer.getUri();
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
}
});
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
killPlayer();
}
});
mediaPlayer.setDataSource(mContext, uri);
mediaPlayer.prepareAsync();
}
}