@@ -29,6 +29,7 @@ public class MusicPlayerService extends Service {
29
29
final public static String ACTION_PLAY = "com.sidzi.circleofmusic.PLAY" ;
30
30
public static final String ACTION_CLOSE = "com.sidzi.circleofmusic.CLOSE" ;
31
31
public static Track PLAYING_TRACK = null ;
32
+ public static boolean PLAYING_BUCKET ;
32
33
private final IBinder mMIBinder = new MusicBinder ();
33
34
public MediaPlayer mMediaPlayer = null ;
34
35
private int PLAYING_TRACK_POSITION = -1 ;
@@ -85,13 +86,14 @@ public void play(String track_path) {
85
86
mMediaPlayer .setOnCompletionListener (new MediaPlayer .OnCompletionListener () {
86
87
@ Override
87
88
public void onCompletion (MediaPlayer mediaPlayer ) {
88
- next ();
89
+ next (false );
89
90
}
90
91
});
91
92
mMediaPlayer .prepare ();
92
93
PLAYING_TRACK_POSITION = mTrackList .indexOf (new Track (track_path ));
93
94
PLAYING_TRACK = mTrackList .get (PLAYING_TRACK_POSITION );
94
- uiUpdate (PLAYING_TRACK );
95
+ PLAYING_BUCKET = false ;
96
+ uiUpdate (true );
95
97
if (songsTillSleep == 0 )
96
98
onDestroy ();
97
99
else
@@ -110,7 +112,7 @@ public void play(String Path, String Artist, String Name) {
110
112
mMediaPlayer .prepareAsync ();
111
113
PLAYING_TRACK = new Track (Name , Path , Artist );
112
114
PLAYING_TRACK .setBucket (false );
113
- uiUpdate (PLAYING_TRACK );
115
+ uiUpdate (true );
114
116
} catch (IOException e ) {
115
117
e .printStackTrace ();
116
118
}
@@ -125,10 +127,7 @@ public void bucketPlay(String track_path) {
125
127
mMediaPlayer .setOnCompletionListener (new MediaPlayer .OnCompletionListener () {
126
128
@ Override
127
129
public void onCompletion (MediaPlayer mediaPlayer ) {
128
- try {
129
- bucketPlay (mBucketList .get (++PLAYING_TRACK_POSITION ).getPath ());
130
- } catch (IndexOutOfBoundsException ignore ) {
131
- }
130
+ next (true );
132
131
}
133
132
});
134
133
mMediaPlayer .prepare ();
@@ -137,7 +136,8 @@ public void onCompletion(MediaPlayer mediaPlayer) {
137
136
PLAYING_TRACK = mBucketList .get (PLAYING_TRACK_POSITION );
138
137
} catch (IndexOutOfBoundsException | NullPointerException ignore ) {
139
138
}
140
- uiUpdate (PLAYING_TRACK );
139
+ PLAYING_BUCKET = true ;
140
+ uiUpdate (true );
141
141
if (songsTillSleep == 0 )
142
142
onDestroy ();
143
143
else
@@ -147,18 +147,24 @@ public void onCompletion(MediaPlayer mediaPlayer) {
147
147
}
148
148
}
149
149
150
- public void next () {
151
- play (mTrackList .get (++PLAYING_TRACK_POSITION ).getPath ());
150
+ public void next (boolean bucket ) {
151
+ try {
152
+ if (!bucket )
153
+ play (mTrackList .get (++PLAYING_TRACK_POSITION ).getPath ());
154
+ else
155
+ bucketPlay (mBucketList .get (++PLAYING_TRACK_POSITION ).getPath ());
156
+ } catch (IndexOutOfBoundsException ignore ) {
157
+ }
152
158
}
153
159
154
160
public void pause () {
155
161
mMediaPlayer .pause ();
156
- uiUpdate (null );
162
+ uiUpdate (false );
157
163
}
158
164
159
165
public void unpause () {
160
166
mMediaPlayer .start ();
161
- uiUpdate (null );
167
+ uiUpdate (false );
162
168
}
163
169
164
170
public boolean bucketOperation () {
@@ -167,10 +173,9 @@ public boolean bucketOperation() {
167
173
return PLAYING_TRACK .getBucket ();
168
174
}
169
175
170
- private void uiUpdate (Track track ) {
171
- String action = (track == null ) ? (mMediaPlayer .isPlaying () ? ACTION_PLAY : ACTION_PAUSE ) : ACTION_UPDATE_METADATA ;
176
+ private void uiUpdate (boolean b ) {
177
+ String action = (! b ) ? (mMediaPlayer .isPlaying () ? ACTION_PLAY : ACTION_PAUSE ) : ACTION_UPDATE_METADATA ;
172
178
Intent intent = new Intent (action );
173
- intent .putExtra ("track_metadata" , track );
174
179
localBroadcastManager .sendBroadcast (intent );
175
180
}
176
181
@@ -185,7 +190,7 @@ private void init() {
185
190
@ Override
186
191
public void onPrepared (MediaPlayer mediaPlayer ) {
187
192
mediaPlayer .start ();
188
- uiUpdate (null );
193
+ uiUpdate (false );
189
194
}
190
195
});
191
196
}
0 commit comments