Skip to content

Commit 094c970

Browse files
author
Sid Zi
committed
added offline alarms and audionfeedback on media button add bucket
1 parent db677ea commit 094c970

File tree

4 files changed

+55
-18
lines changed

4 files changed

+55
-18
lines changed

app/src/main/java/com/sidzi/circleofmusic/recievers/MediaButtonHandler.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,29 @@
33
import android.content.BroadcastReceiver;
44
import android.content.Context;
55
import android.content.Intent;
6+
import android.media.SoundPool;
67

8+
import com.sidzi.circleofmusic.R;
79
import com.sidzi.circleofmusic.helpers.Utils;
810
import com.sidzi.circleofmusic.services.MusicPlayerService;
911

12+
import static android.os.Build.VERSION.SDK_INT;
13+
1014
public class MediaButtonHandler extends BroadcastReceiver {
1115
@Override
1216
public void onReceive(Context context, Intent intent) {
13-
if (MusicPlayerService.PLAYING_TRACK != null)
17+
if (MusicPlayerService.PLAYING_TRACK != null) {
1418
Utils.bucketOps(MusicPlayerService.PLAYING_TRACK.getPath(), true, context);
19+
if (SDK_INT >= 21) {
20+
SoundPool soundPool = new SoundPool.Builder().build();
21+
final int SoundID = soundPool.load(context, R.raw.fart, 0);
22+
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
23+
@Override
24+
public void onLoadComplete(SoundPool soundPool, int i, int i1) {
25+
soundPool.play(SoundID, 1, 1, 0, 0, 1);
26+
}
27+
});
28+
}
29+
}
1530
}
1631
}

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

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,20 @@ public class AlarmActivity extends AppCompatActivity {
3737
*/
3838
private static final int UI_ANIMATION_DELAY = 300;
3939
private final Handler mHideHandler = new Handler();
40+
/**
41+
* Touch listener to use for in-layout UI controls to delay hiding the
42+
* system UI. This is to prevent the jarring behavior of controls going away
43+
* while interacting with activity UI.
44+
*/
45+
private final View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() {
46+
@Override
47+
public boolean onTouch(View view, MotionEvent motionEvent) {
48+
if (AUTO_HIDE) {
49+
delayedHide(AUTO_HIDE_DELAY_MILLIS);
50+
}
51+
return false;
52+
}
53+
};
4054
private View mContentView;
4155
private final Runnable mHidePart2Runnable = new Runnable() {
4256
@SuppressLint("InlinedApi")
@@ -74,20 +88,6 @@ public void run() {
7488
hide();
7589
}
7690
};
77-
/**
78-
* Touch listener to use for in-layout UI controls to delay hiding the
79-
* system UI. This is to prevent the jarring behavior of controls going away
80-
* while interacting with activity UI.
81-
*/
82-
private final View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() {
83-
@Override
84-
public boolean onTouch(View view, MotionEvent motionEvent) {
85-
if (AUTO_HIDE) {
86-
delayedHide(AUTO_HIDE_DELAY_MILLIS);
87-
}
88-
return false;
89-
}
90-
};
9191

9292
@Override
9393
protected void onCreate(Bundle savedInstanceState) {
@@ -121,12 +121,12 @@ public void onClick(View view) {
121121
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
122122
@Override
123123
public void onPrepared(MediaPlayer mediaPlayer) {
124-
mediaPlayer.setLooping(true);
125124
mediaPlayer.start();
126125
}
127126
});
128127
try {
129128
mediaPlayer.setDataSource(getIntent().getStringExtra("alarm_path"));
129+
mediaPlayer.setLooping(true);
130130
mediaPlayer.prepare();
131131
} catch (IOException e) {
132132
e.printStackTrace();

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

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,11 @@
2929
import org.json.JSONObject;
3030

3131
import java.io.File;
32+
import java.io.FilenameFilter;
3233
import java.util.Calendar;
3334

35+
import static android.os.Build.VERSION.SDK_INT;
36+
3437
public class AlarmSettingActivity extends AppCompatActivity {
3538
private static final int REQUEST_ALARM_PATH = 4114;
3639
EditText etTimePicker;
@@ -98,7 +101,23 @@ public void onClick(DialogInterface dialogInterface, int i) {
98101
}, new Response.ErrorListener() {
99102
@Override
100103
public void onErrorResponse(VolleyError error) {
101-
104+
File[] alarms = new File(config.com_local_url).listFiles(new FilenameFilter() {
105+
@Override
106+
public boolean accept(File file, String s) {
107+
return !s.startsWith("secondary_");
108+
}
109+
});
110+
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(getApplicationContext(), R.layout.layout_row_alarm_selection);
111+
for (File alarm : alarms)
112+
arrayAdapter.add(alarm.getName());
113+
innerBuilder.setAdapter(arrayAdapter, new DialogInterface.OnClickListener() {
114+
@Override
115+
public void onClick(DialogInterface dialogInterface, int i) {
116+
setAlarm(config.com_local_url + arrayAdapter.getItem(i), config.com_local_url + "secondary_" + arrayAdapter.getItem(i));
117+
finish();
118+
}
119+
});
120+
innerBuilder.create().show();
102121
}
103122
});
104123
requestQueue.add(alarmArray);
@@ -143,7 +162,10 @@ void setAlarm(String alarm, String secondary_alarm) {
143162
else
144163
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE), hour, minute);
145164

146-
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
165+
if (SDK_INT >= 19)
166+
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
167+
else
168+
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
147169

148170
Toast.makeText(getApplicationContext(), "Setting Alarm for " + dH + " hrs from now", Toast.LENGTH_LONG).show();
149171
}

app/src/main/res/raw/fart.mp3

63.4 KB
Binary file not shown.

0 commit comments

Comments
 (0)