> import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.ImageButton;
import android.widget.SeekBar;
import com.google.ads.Ad;
import com.google.ads.AdListener;
import com.google.ads.AdRequest;
import com.google.ads.AdRequest.ErrorCode;
import com.google.ads.InterstitialAd;
/**
* @author Rashid Ali
* @Date Sep 18, 2014
* @Email <rashid.android.developer@gmail.com>
*
*/
public class AudioPlayerActivity extends Activity implements OnClickListener,
OnTouchListener, OnCompletionListener, OnBufferingUpdateListener,
AdListener {
private ProgressDialog progressBar;
private static final String AD_UNIT_ID_GOES_HERE = "ca-app-pub-5453344383403527/5064575693";
private InterstitialAd interstitialAd;
private ImageButton buttonPlayPause;
private SeekBar seekBarProgress;
private MediaPlayer mediaPlayer;
private int mediaFileLengthInMilliseconds; // this value contains the song
// duration in milliseconds.
// Look at getDuration() method
// in MediaPlayer class
private final Handler handler = new Handler();
String audioName;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_audio_player);
interstitialAd = new InterstitialAd(this, AD_UNIT_ID_GOES_HERE);
interstitialAd.setAdListener(this);
AdRequest adRequest = new AdRequest();
adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
interstitialAd.loadAd(adRequest);
initilizeUI();
Intent intent = getIntent();
audioName = intent.getStringExtra("audioName");
}
/** This method is used to Initialize UI Components. */
private void initilizeUI() {
buttonPlayPause = (ImageButton) findViewById(R.id.ButtonTestPlayPause);
buttonPlayPause.setOnClickListener(this);
seekBarProgress = (SeekBar) findViewById(R.id.SeekBarTestPlay);
seekBarProgress.setMax(99);
seekBarProgress.setOnTouchListener(this);
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnBufferingUpdateListener(this);
mediaPlayer.setOnCompletionListener(this);
}
/**
* Method which updates the SeekBar primary progress by current song playing
* position
*/
private void primarySeekBarProgressUpdater() {
seekBarProgress.setProgress((int) (((float) mediaPlayer
.getCurrentPosition() / mediaFileLengthInMilliseconds) * 100)); // This
// math
// construction
// give
// a
// percentage
// of
// "was playing"/"song length"
if (mediaPlayer.isPlaying()) {
Runnable notification = new Runnable() {
public void run() {
primarySeekBarProgressUpdater();
}
};
handler.postDelayed(notification, 1000);
}
}
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
/**
* Method which updates the SeekBar secondary progress by current song
* loading from URL position
*/
seekBarProgress.setSecondaryProgress(percent);
}
@Override
public void onCompletion(MediaPlayer mp) {
/**
* MediaPlayer onCompletion event handler. Method which calls then song
* playing is complete
*/
// buttonPlayPause.setImageResource(R.drawable.button_play);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (v.getId() == R.id.SeekBarTestPlay) {
/**
* Seekbar onTouch event handler. Method which seeks MediaPlayer to
* seekBar primary progress position
*/
if (mediaPlayer.isPlaying()) {
SeekBar sb = (SeekBar) v;
int playPositionInMillisecconds = (mediaFileLengthInMilliseconds / 100)
* sb.getProgress();
mediaPlayer.seekTo(playPositionInMillisecconds);
}
}
return false;
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.ButtonTestPlayPause) {
/**
* ImageButton onClick event handler. Method which start/pause
* mediaplayer playing
*/
try {
mediaPlayer.setDataSource(audioName); // setup
// song
// from
// http://www.hrupin.com/wp-content/uploads/mp3/testsong_20_sec.mp3
// URL
// to
// mediaplayer
// data
// source
mediaPlayer.prepare(); // you must call this method after setup
// the datasource in setDataSource
// method. After calling prepare() the
// instance of MediaPlayer starts load
// data from URL to internal buffer.
} catch (Exception e) {
e.printStackTrace();
}
mediaFileLengthInMilliseconds = mediaPlayer.getDuration(); // gets
// the
// song
// length
// in
// milliseconds
// from
// URL
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
buttonPlayPause.setImageResource(R.drawable.pause_button);
} else {
mediaPlayer.pause();
buttonPlayPause.setImageResource(R.drawable.play_button);
}
primarySeekBarProgressUpdater();
}
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
mediaPlayer.stop();
this.finish();
}
@Override
public void onDismissScreen(Ad arg0) {
// TODO Auto-generated method stub
}
@Override
public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) {
// TODO Auto-generated method stub
}
@Override
public void onLeaveApplication(Ad arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPresentScreen(Ad arg0) {
// TODO Auto-generated method stub
}
@Override
public void onReceiveAd(Ad ad) {
// TODO Auto-generated method stub
if (ad == interstitialAd) {
interstitialAd.show();
}
}
}
<RelativeLayout
android:id="@+id/layout_header"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@drawable/header" >
</RelativeLayout>
<RelativeLayout
android:id="@+id/ad_layout"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_below="@+id/layout_header" >
<com.google.ads.AdView
android:id="@+id/googleads"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-5453344383403527/9634376094"
ads:loadAdOnCreate="true" >
</com.google.ads.AdView>
</RelativeLayout>
<RelativeLayout
android:id="@+id/ad_layout"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true" >
<com.google.ads.AdView
android:id="@+id/googleads"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-5453344383403527/2111109291"
ads:loadAdOnCreate="true" >
</com.google.ads.AdView>
</RelativeLayout>
<RelativeLayout
android:id="@+id/functional_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true" >
<ImageButton
android:id="@+id/ButtonTestPlayPause"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginLeft="10dp"
android:src="@drawable/play_button" />
<SeekBar
android:id="@+id/SeekBarTestPlay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_toRightOf="@+id/ButtonTestPlayPause" />
</RelativeLayout>