Chelsea 1101
Tham gia ngày 22 tháng 1 năm 2018
package samsung.com.myplayer; import android.content.ActivityNotFoundException; import android.content.ContentResolver; import android.content.ContentUris; import android.database.Cursor; import android.media.MediaPlayer; import android.net.Uri; import android.os.Handler; import android.provider.MediaStore; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.os.IBinder; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.view.MenuItem; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; 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 java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Random; public class PlayActivity extends AppCompatActivity { static MediaPlayer mediaPlayer = new MediaPlayer(); TextView txtTitle, txtTimeSong, txtTimeTotal, txtArtist; SeekBar seekSong; ImageButton btnPrev, btnNext, btnPlay, btnRepeat, btnShuffle; Animation animation; ImageView img; int position; boolean isShuffle = false; boolean isRepeat = false; ArrayList<song> arraySong; public void setSong(int position) throws IOException { mediaPlayer.reset(); mediaPlayer.setDataSource(arraySong.get(position).getDta()); txtTitle.setText(arraySong.get(position).getTitle()); txtArtist.setText(arraySong.get(position).getArtist()); mediaPlayer.prepare(); } public void SetTimeTotal() { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("mm:ss"); txtTimeTotal.setText(simpleDateFormat.format(mediaPlayer.getDuration())); seekSong.setMax(mediaPlayer.getDuration()); } public void UpdateTimeSong() { final Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("mm:ss"); txtTimeSong.setText(simpleDateFormat.format(mediaPlayer.getCurrentPosition())); seekSong.setProgress(mediaPlayer.getCurrentPosition()); mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { btnPlay.setImageResource(R.drawable.ic_play_circle_outline_white_24dp); if(position > arraySong.size()-1) { position = 0; } if (mediaPlayer.isPlaying()) { mediaPlayer.stop(); } try { if(isRepeat==false){ ++position; setSong(position); curpos=position;} else{ setSong(curpos); } mediaPlayer.start(); btnPlay.setImageResource(R.drawable.ic_pause_circle_outline_white_24dp); SetTimeTotal(); UpdateTimeSong(); } catch (IOException e) { e.printStackTrace(); } if (isShuffle){ Random rand = new Random(); curpos = rand.nextInt((arraySong.size() - 1) - 0 + 1) + 0; try { setSong(curpos); mp.start(); } catch (IOException e) { e.printStackTrace(); } } // else { // if (curpos < arraySong.size() - 1) // curpos++; // else if (curpos == arraySong.size() - 1) // curpos = 0; // try { // setSong(curpos); // mp.start(); // btnPlay.setImageResource(R.drawable.ic_pause_circle_outline_white_48dp); // SetTimeTotal(); // UpdateTimeSong(); // } catch (IOException e) { // Toast.makeText(PlayActivity.this, "Can not play", Toast.LENGTH_LONG).show(); // } // } } }); handler.postDelayed(this, 500); } }, 100); } int curpos = -1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) { finish(); return; } setContentView(R.layout.activity_play); btnNext = (ImageButton) findViewById(R.id.btn_next); btnPrev = (ImageButton) findViewById(R.id.btn_prev); txtTitle = (TextView) findViewById(R.id.title); btnPlay = (ImageButton) findViewById(R.id.btn_play); txtTimeSong = (TextView) findViewById(R.id.time_song); txtTimeTotal = (TextView) findViewById(R.id.time_total); txtArtist = (TextView) findViewById(R.id.artist); btnRepeat = (ImageButton)findViewById(R.id.btn_repeat); btnShuffle = (ImageButton)findViewById(R.id.btn_suffle); Intent intent = getIntent(); position = intent.getIntExtra("songid", -1); arraySong = new ArrayList<song>(); arraySong = (ArrayList<song>) intent.getSerializableExtra("arraysong"); seekSong = (SeekBar) findViewById(R.id.seekbar_song); img = (ImageView) findViewById(R.id.imageViewDisc); animation = AnimationUtils.loadAnimation(this, R.anim.disc_rotate); if (curpos != position) { curpos = position; try { setSong(curpos); mediaPlayer.start(); btnPlay.setImageResource(R.drawable.ic_pause_circle_outline_white_48dp); img.startAnimation(animation); SetTimeTotal(); UpdateTimeSong(); } catch (IOException e) { Toast.makeText(PlayActivity.this, "Can not play", Toast.LENGTH_LONG).show(); } } else { try { setSong(curpos); mediaPlayer.start(); btnPlay.setImageResource(R.drawable.ic_pause_circle_outline_white_48dp); img.startAnimation(animation); SetTimeTotal(); UpdateTimeSong(); } catch (IOException e) { Toast.makeText(PlayActivity.this, "Can not play", Toast.LENGTH_LONG).show(); } } btnPlay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); btnPlay.setImageResource(R.drawable.ic_play_circle_outline_white_48dp); img.clearAnimation(); SetTimeTotal(); UpdateTimeSong(); } else { mediaPlayer.start(); btnPlay.setImageResource(R.drawable.ic_pause_circle_outline_white_48dp); img.startAnimation(animation); SetTimeTotal(); UpdateTimeSong(); } } }); btnNext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (position < arraySong.size() - 1) position++; else if (position == arraySong.size() - 1) position = 0; try { setSong(position); mediaPlayer.start(); btnPlay.setImageResource(R.drawable.ic_pause_circle_outline_white_48dp); SetTimeTotal(); UpdateTimeSong(); } catch (IOException e) { Toast.makeText(PlayActivity.this, "Can not play", Toast.LENGTH_LONG).show(); } } }); btnPrev.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (position > 0) position--; else if (position == 0) position = arraySong.size() - 1; try { setSong(position); mediaPlayer.start(); btnPlay.setImageResource(R.drawable.ic_pause_circle_outline_white_48dp); SetTimeTotal(); UpdateTimeSong(); } catch (IOException e) { Toast.makeText(PlayActivity.this, "Can not play", Toast.LENGTH_LONG).show(); } } }); seekSong.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { mediaPlayer.seekTo(seekSong.getProgress()); } }); btnRepeat.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { if(isRepeat){ isRepeat = false; SetTimeTotal(); UpdateTimeSong(); Toast.makeText(getApplicationContext(), "Repeat is OFF", Toast.LENGTH_SHORT).show(); btnRepeat.setImageResource(R.drawable.ic_repeat_white_48dp); }else{ // make repeat to true SetTimeTotal(); UpdateTimeSong(); Toast.makeText(getApplicationContext(), "Repeat is ON", Toast.LENGTH_SHORT).show(); // make shuffle to false isRepeat = true; isShuffle = false; btnRepeat.setImageResource(R.drawable.ic_repeat_one_white_48dp); } } }); btnShuffle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { if(isShuffle){ isShuffle = false; Toast.makeText(getApplicationContext(), "Shuffle is OFF", Toast.LENGTH_SHORT).show(); btnShuffle.setImageResource(R.drawable.ic_trending_flat_white_48dp); }else{ // make repeat to true isShuffle= true; Toast.makeText(getApplicationContext(), "Shuffle is ON", Toast.LENGTH_SHORT).show(); // make shuffle to false isRepeat = false; btnShuffle.setImageResource(R.drawable.ic_shuffle_white_48dp); } } }); } }