Skip to content

Commit fa331f9

Browse files
author
Sid Zi
committed
added sleep timer
1 parent 4ffb180 commit fa331f9

File tree

4 files changed

+61
-1
lines changed

4 files changed

+61
-1
lines changed

app/src/main/java/com/sidzi/circleofmusic/adapters/TracksAdapter.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,11 @@ public void onClick(View v) {
120120
Intent intent = new Intent(mContext, MusicPlayerService.class);
121121
MusicServiceConnection mMusicServiceConnection = ((MainActivity) mContext).mMusicServiceConnection;
122122
mContext.bindService(intent, mMusicServiceConnection, Context.BIND_AUTO_CREATE);
123-
mMusicServiceConnection.getmMusicPlayerService().play(v.getTag(R.id.tag_track_path).toString());
123+
if (!bucketBool)
124+
mMusicServiceConnection.getmMusicPlayerService().play(v.getTag(R.id.tag_track_path).toString());
125+
else
126+
mMusicServiceConnection.getmMusicPlayerService().bucketPlay(v.getTag(R.id.tag_track_path).toString());
127+
124128
}
125129

126130
@Override

app/src/main/java/com/sidzi/circleofmusic/services/MusicPlayerService.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ public class MusicPlayerService extends Service {
3434
private int PLAYING_TRACK_POSITION = -1;
3535
private LocalBroadcastManager localBroadcastManager;
3636
private List<Track> mTrackList;
37+
private List<Track> mBucketList;
3738
private Context mContext;
39+
private int songsTillSleep = -1;
3840

3941

4042
public MusicPlayerService() {
@@ -56,6 +58,7 @@ public void onCreate() {
5658
try {
5759
dbTrack = ormHandler.getDao(Track.class);
5860
mTrackList = dbTrack.queryForAll();
61+
mBucketList = dbTrack.queryForEq("bucket", true);
5962
} catch (SQLException e) {
6063
e.printStackTrace();
6164
}
@@ -89,6 +92,10 @@ public void onCompletion(MediaPlayer mediaPlayer) {
8992
PLAYING_TRACK_POSITION = mTrackList.indexOf(new Track(track_path));
9093
PLAYING_TRACK = mTrackList.get(PLAYING_TRACK_POSITION);
9194
uiUpdate(PLAYING_TRACK);
95+
if (songsTillSleep == 0)
96+
onDestroy();
97+
else
98+
songsTillSleep--;
9299
} catch (IOException e) {
93100
e.printStackTrace();
94101
}
@@ -109,6 +116,31 @@ public void play(String Path, String Artist, String Name) {
109116
}
110117
}
111118

119+
public void bucketPlay(String track_path) {
120+
if (mMediaPlayer == null)
121+
init();
122+
mMediaPlayer.reset();
123+
try {
124+
mMediaPlayer.setDataSource(track_path);
125+
mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
126+
@Override
127+
public void onCompletion(MediaPlayer mediaPlayer) {
128+
bucketPlay(mBucketList.get(++PLAYING_TRACK_POSITION).getPath());
129+
}
130+
});
131+
mMediaPlayer.prepare();
132+
PLAYING_TRACK_POSITION = mBucketList.indexOf(new Track(track_path));
133+
PLAYING_TRACK = mBucketList.get(PLAYING_TRACK_POSITION);
134+
uiUpdate(PLAYING_TRACK);
135+
if (songsTillSleep == 0)
136+
onDestroy();
137+
else
138+
songsTillSleep--;
139+
} catch (IOException e) {
140+
e.printStackTrace();
141+
}
142+
}
143+
112144
public void next() {
113145
play(mTrackList.get(++PLAYING_TRACK_POSITION).getPath());
114146
}
@@ -136,6 +168,10 @@ private void uiUpdate(Track track) {
136168
localBroadcastManager.sendBroadcast(intent);
137169
}
138170

171+
public void setSongsTillSleep(int count) {
172+
songsTillSleep = count;
173+
}
174+
139175
private void init() {
140176
mMediaPlayer = new MediaPlayer();
141177
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

app/src/main/java/com/sidzi/circleofmusic/ui/MainActivity.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.Manifest;
44
import android.content.ComponentName;
55
import android.content.Context;
6+
import android.content.DialogInterface;
67
import android.content.Intent;
78
import android.content.IntentFilter;
89
import android.content.pm.PackageManager;
@@ -17,6 +18,7 @@
1718
import android.support.v4.content.ContextCompat;
1819
import android.support.v4.content.LocalBroadcastManager;
1920
import android.support.v4.view.ViewPager;
21+
import android.support.v7.app.AlertDialog;
2022
import android.support.v7.app.AppCompatActivity;
2123
import android.support.v7.widget.LinearLayoutManager;
2224
import android.support.v7.widget.RecyclerView;
@@ -223,6 +225,20 @@ public boolean onOptionsItemSelected(MenuItem item) {
223225
Intent intent = new Intent(this, AlarmSettingActivity.class);
224226
startActivity(intent);
225227
break;
228+
case R.id.sleepTimer:
229+
AlertDialog.Builder builder = new AlertDialog.Builder(this);
230+
final EditText editText = new EditText(this);
231+
builder.setTitle("# of songs till sleep")
232+
.setView(editText)
233+
.setPositiveButton("set", new DialogInterface.OnClickListener() {
234+
@Override
235+
public void onClick(DialogInterface dialogInterface, int i) {
236+
mMusicServiceConnection.getmMusicPlayerService().setSongsTillSleep(Integer.parseInt(((editText.getText().toString()))));
237+
dialogInterface.dismiss();
238+
}
239+
});
240+
builder.create().show();
241+
break;
226242
case R.id.exit:
227243
mMusicServiceConnection.getmMusicPlayerService().onDestroy();
228244
unbindService(mMusicServiceConnection);

app/src/main/res/menu/menu_home.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@
1313
android:id="@+id/alarm"
1414
android:title="Alarm" />
1515

16+
<item
17+
android:id="@+id/sleepTimer"
18+
android:title="Sleep Timer" />
19+
1620
<item
1721
android:id="@+id/exit"
1822
android:title="Quit" />

0 commit comments

Comments
 (0)