Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Then try this,,,</p> <pre><code>import android.media.MediaPlayer; import android.media.MediaPlayer.OnBufferingUpdateListener; import android.media.MediaPlayer.OnCompletionListener; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Environment; 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.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.SeekBar; import android.widget.TextView; import android.widget.Toast; import android.annotation.SuppressLint; import android.app.Activity; import android.app.DownloadManager; import android.content.Context; @SuppressLint({ "NewApi", "DefaultLocale" }) public class Detail extends Activity implements OnClickListener, OnTouchListener, OnCompletionListener, OnBufferingUpdateListener{ String url; String nameFile; String name; boolean isBack = false; 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(); private ltv.model.MSong mSong; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.detail); // FOR PLAY MP3 FILE url = "mp3 link"; initView(); } /** This method initialise all the views in project*/ private void initView() { buttonPlayPause = (ImageButton)findViewById(R.id.ButtonTestPlayPause); buttonPlayPause.setOnClickListener(this); seekBarProgress = (SeekBar)findViewById(R.id.SeekBarTestPlay); seekBarProgress.setMax(99); // It means 100% .0-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 onClick(View v) { if(v.getId() == R.id.ButtonTestPlayPause){ /** ImageButton onClick event handler. Method which start/pause mediaplayer playing */ try { mediaPlayer.setDataSource(url); 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.button_pause); }else { mediaPlayer.pause(); buttonPlayPause.setImageResource(R.drawable.button_play); } primarySeekBarProgressUpdater(); } } @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 onCompletion(MediaPlayer mp) { /** MediaPlayer onCompletion event handler. Method which calls then song playing is complete*/ buttonPlayPause.setImageResource(R.drawable.button_play); } @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 onBackPressed() { if (isBack) { super.onBackPressed(); } else { if (mediaPlayer != null) { if (mediaPlayer.isPlaying()) { back(); } else { super.onBackPressed(); } } else { super.onBackPressed(); } } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload