Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package tc.com.nicemp3player;
- import android.content.Context;
- import android.database.Cursor;
- import android.media.MediaPlayer;
- import android.provider.MediaStore;
- import java.io.IOException;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * Created by thanh on 19-Jul-16.
- */
- public class MediaManager {
- public static int STATE_IDLE = -1;
- public static int STATE_PLAYING = 1;
- public static int STATE_PAUSE = 2;
- public static int STATE_STOP = 3;
- public static int STATE_SEEKING = 4;
- private static final String TAG = "TAG";
- // private Context mContext;
- private MediaPlayer mediaPlayer;
- private List<Song> listSong = new ArrayList<>();
- private int mediaState;
- private int indexSong = 0;
- private OnPlayStartedListener listener;
- public void setIndexSong(int indexSong){
- this.indexSong = indexSong;
- }
- public int getIndexSong(){
- return indexSong;
- }
- public MediaManager(Context context){
- // mContext = context;
- getListSong(context);
- mediaPlayer = new MediaPlayer();
- mediaState = STATE_IDLE;
- mediaPlayer.setOnCompletionListener((MediaPlayer.OnCompletionListener)context);
- listener = (OnPlayStartedListener)context;
- }
- public List<Song> getSong(){
- return listSong;
- }
- public void playOrPause(boolean isClickItemView){
- if (mediaState == STATE_IDLE || mediaState == STATE_STOP||(mediaState==STATE_PLAYING&&isClickItemView)){
- try {
- mediaPlayer.reset();
- Song song = listSong.get(indexSong);
- mediaPlayer.setDataSource(song.getPath());
- // mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
- mediaPlayer.prepare();
- // mediaPlayer.setLooping(false);
- mediaPlayer.start();
- listener.onMediaStarted(song.getName(),song.getArtist(),song.getTime(),mediaPlayer.getDuration());
- mediaState = STATE_PLAYING;
- } catch (IOException e) {
- e.printStackTrace();
- }
- }else if (mediaState == STATE_PLAYING){
- mediaPlayer.pause();
- mediaState = STATE_PAUSE;
- }
- else if (mediaState==STATE_PAUSE) {
- mediaPlayer.start();
- mediaState = STATE_PLAYING;
- }
- }
- public void next(){
- if (indexSong<listSong.size()-1){
- indexSong++;
- }else {
- indexSong = 0;
- }
- if (mediaState==STATE_PLAYING){
- playOrPause(true);
- }else{
- Song song = listSong.get(indexSong);
- listener.onMediaStarted(song.getName(),song.getArtist(),song.getTime(),mediaPlayer.getDuration());
- mediaState = STATE_STOP;
- }
- }
- public void previous(){
- if (indexSong>0){
- indexSong--;
- }else {
- indexSong = listSong.size()-1;
- }
- if (mediaState==STATE_PLAYING){
- playOrPause(true);
- }else{
- Song song = listSong.get(indexSong);
- listener.onMediaStarted(song.getName(), song.getArtist(), song.getTime(), mediaPlayer.getDuration());
- mediaState = STATE_STOP;
- }
- }
- public void stop(){
- if (mediaState==STATE_IDLE){
- return;
- }
- mediaPlayer.stop();
- Song song = listSong.get(indexSong);
- listener.onMediaStarted(song.getName(), song.getArtist(), song.getTime(), mediaPlayer.getDuration());
- mediaState = STATE_STOP;
- }
- public void seekTo(int progress){
- mediaPlayer.seekTo(progress);
- }
- private void getListSong(Context context){
- if (listSong.size()>0){
- return;
- }
- String projection[] = new String[]{
- //name
- MediaStore.MediaColumns.TITLE,
- //file name
- MediaStore.MediaColumns.DISPLAY_NAME,
- //path
- MediaStore.MediaColumns.DATA,
- MediaStore.Audio.Media.ARTIST,
- MediaStore.Audio.Media.ALBUM,
- MediaStore.Audio.Media.DURATION
- };
- Cursor cursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
- projection,
- null,
- null,
- null);
- if (cursor == null){
- return;
- }else {
- cursor.moveToFirst();
- while (cursor.isAfterLast()==false){
- String name = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.TITLE));
- String fileName = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME));
- String path = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA));
- String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
- String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
- int duration = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
- listSong.add(new Song(name, fileName, path, artist, album, duration));
- cursor.moveToNext();
- }
- cursor.close();
- }
- }
- public int getCurrentTime() {
- if (mediaState==STATE_PLAYING){
- return mediaPlayer.getCurrentPosition();
- }
- return -1;
- }
- public int getCurrentPosition(){
- return mediaPlayer.getCurrentPosition();
- }
- public interface OnPlayStartedListener{
- public void onMediaStarted(String nameSong,String singer,String totalTime, int totalTimeInt);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement