package org.sana.android.media;
import android.content.Context;
import android.content.res.Resources;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class AudioPlayer implements OnClickListener, OnCompletionListener {
private static final String TAG = AudioPlayer.class.toString();
private static final String PLAY = "?";
private static final String PAUSE = "||";
private int resourceId;
private Button playButton = null;
private Context mContext = null;
private MediaPlayer mp = null;
public AudioPlayer(int resourceId) {
this.resourceId = resourceId;
}
public void onClick(View v) {
Log.i(TAG, "Audio prompt play button pressed");
try {
if (mp == null) {
play();
} else {
stop();
}
} catch (Exception e) {
Log.e(TAG, "Could not prepare media player: " + e.toString());
}
}
public void play() {
if (mp == null) {
try {
mp = MediaPlayer.create(mContext, resourceId);
mp.setOnCompletionListener(this);
mp.start();
playButton.setText(PAUSE);
} catch (Resources.NotFoundException exception) {
Log.e(TAG, "Resource " + resourceId + " did not exist.");
exception.printStackTrace();
}
}
}
public void stop() {
if (mp != null) {
mp.stop();
mp.release();
mp = null;
playButton.setText(PLAY);
}
}
public View createView(Context c) {
mContext = c; // TODO leak?
playButton = new Button(c);
playButton.setText(PLAY);
playButton.setOnClickListener(this);
return playButton;
}
public void onCompletion(MediaPlayer foo) {
Log.i(TAG, "Playing complete.");
stop();
}
}