package com.oreilly.demo.android.pa.audioplayer;
import android.app.Activity;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.MediaController;
public class AudioPlayerWMediaController extends Activity {
public static final String AUDIOFILEURI = "AudioFileUri";
private MediaPlayer mediaplayer;
private Uri mediaReference;
private MediaController controller;
private boolean begin = true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(getIntent() != null && getIntent().hasExtra(AUDIOFILEURI))
mediaReference = getIntent().getParcelableExtra(AUDIOFILEURI);
setUpView();
initializeMediaPlayer();
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if(hasFocus && begin && !controller.isShowing()) {
begin = false;
controller.show(0);
mediaplayer.start();
}
}
@Override
public void onDestroy() {
super.onDestroy();
mediaplayer.release();
}
/////////////////////
// Set up the view //
/////////////////////
private void setUpView() {
setContentView(R.layout.audioplayerwmediacontrol);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
controller.show(0);
return super.onTouchEvent(event);
}
/////////////////////////////////
// MediaPlayer related methods //
/////////////////////////////////
private void initializeMediaPlayer() {
try {
if(mediaReference == null) {
mediaplayer = MediaPlayer.create(this, R.raw.example);
} else {
mediaplayer = new MediaPlayer();
mediaplayer.setDataSource(this, mediaReference);
mediaplayer.prepare();
}
controller = new MediaController(this);
controller.setMediaPlayer(new AudioController(mediaplayer));
controller.setEnabled(true);
controller.setAnchorView(findViewById(R.id.mainlayout));
} catch (Exception e) {
e.printStackTrace();
}
}
public static class AudioController implements MediaController.MediaPlayerControl {
private MediaPlayer media;
public AudioController(MediaPlayer md) {
media = md;
}
@Override
public boolean canPause() {
return true;
}
@Override
public boolean canSeekBackward() {
return true;
}
@Override
public boolean canSeekForward() {
return true;
}
@Override
public int getBufferPercentage() {
return 0;
}
@Override
public int getCurrentPosition() {
return media.getCurrentPosition();
}
@Override
public int getDuration() {
return media.getDuration();
}
@Override
public boolean isPlaying() {
return media.isPlaying();
}
@Override
public void pause() {
media.pause();
}
@Override
public void seekTo(int pos) {
media.seekTo(pos);
}
@Override
public void start() {
media.start();
}
}
}