/
MediaPlayerService.java
134 lines (109 loc) · 3.05 KB
/
MediaPlayerService.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package com.rickdmer.spotifystreamer;
import android.app.Service;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
import android.support.annotation.Nullable;
import java.io.IOException;
import java.util.ArrayList;
/**
* Created by Richard on 10/5/2015.
*/
public class MediaPlayerService extends Service implements MediaPlayer.OnPreparedListener, MediaPlayer.OnCompletionListener {
private final IBinder binder = new LocalBinder();
private MediaPlayer mediaPlayer;
private ArrayList<CustomTrack> trackList = null;
private int trackPosition = 0;
private boolean isPrepared;
@Override
public IBinder onBind(Intent intent) {
return binder;
}
public class LocalBinder extends Binder {
public MediaPlayerService getService() {
return MediaPlayerService.this;
}
}
@Override
public void onCreate() {
super.onCreate();
mediaPlayer = new MediaPlayer();
initMediaPlayer();
}
private void initMediaPlayer() {
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setOnCompletionListener(this);
}
@Override
public void onCompletion(MediaPlayer mp) {
isPrepared = false;
mp.reset();
nextTrack();
}
@Override
public void onPrepared(MediaPlayer mp) {
isPrepared = true;
mp.start();
}
public void playTrack() {
isPrepared = false;
mediaPlayer.reset();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(trackList.get(trackPosition).trackPreviewUrl);
} catch (IOException e) {
e.printStackTrace();
}
mediaPlayer.prepareAsync();
}
public void pause() {
mediaPlayer.pause();
}
public void start() {
mediaPlayer.start();
}
public void nextTrack() {
trackPosition++;
if (trackPosition >= trackList.size()) {
trackPosition = 0;
}
playTrack();
}
public void previousTrack() {
trackPosition--;
if (trackPosition < 0) {
trackPosition = trackList.size() - 1;
}
playTrack();
}
public void stop() {
mediaPlayer.stop();
}
public void seekTo(int position) {
mediaPlayer.seekTo(position);
}
public boolean isPlaying() {
return mediaPlayer.isPlaying();
}
public void setTrackList(ArrayList<CustomTrack>_trackList) {
trackList = _trackList;
}
public void setTrackPosition(int position) {
trackPosition = position;
}
public int getDuration() {
return mediaPlayer.getDuration();
}
public int getTrackPosition() {
return trackPosition;
}
public int getCurrentPosition() {
return mediaPlayer.getCurrentPosition();
}
public CustomTrack getCurrentTrack() {
return trackList.get(trackPosition);
}
}