Alarm service bug fixes, to ensure that the service isn't prematurely cancelled. Also some commented-out code to enable a radial timepicker. This can be re-enabled once 1.5.3 of betterpickers is released, but needs testing.
This commit is contained in:
parent
615b81e295
commit
048d56c84d
@ -65,6 +65,7 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
public static final int CANCEL_ALARM_REQUEST = 5;
|
public static final int CANCEL_ALARM_REQUEST = 5;
|
||||||
public static final int PHONE_NUMBER_REQUEST = 6;
|
public static final int PHONE_NUMBER_REQUEST = 6;
|
||||||
public static final int RINGTONE_REQUEST = 7;
|
public static final int RINGTONE_REQUEST = 7;
|
||||||
|
public static final String TIMEPICKER_TAG = "alarmTimePicker";
|
||||||
public static final String defaultTimeStr = "09:00";
|
public static final String defaultTimeStr = "09:00";
|
||||||
public static final int defaultGracePeriod = 60;
|
public static final int defaultGracePeriod = 60;
|
||||||
public static final Boolean defaultActive = true;
|
public static final Boolean defaultActive = true;
|
||||||
@ -84,6 +85,11 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Main screen
|
// Main screen
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To use a radial timepicker, uncomment this line instead
|
||||||
|
public static class MainFragment extends Fragment implements RadialTimePickerDialog.OnTimeSetListener {
|
||||||
|
*/
|
||||||
public static class MainFragment extends Fragment {
|
public static class MainFragment extends Fragment {
|
||||||
|
|
||||||
public MainFragment() {
|
public MainFragment() {
|
||||||
@ -100,23 +106,34 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
|
|
||||||
super.onStart();
|
super.onStart();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To use a radial timepicker, uncomment here:
|
||||||
|
final RadialTimePickerDialog timePickerDialog = RadialTimePickerDialog.newInstance(this, 0, 0, DateFormat.is24HourFormat(getActivity()));
|
||||||
|
*/
|
||||||
// Set alarm time
|
// Set alarm time
|
||||||
String alarmTimeStr = verifyTimeString(sharedPref.getString(getString(R.string.AlarmTimePref), defaultTimeStr));
|
String alarmTimeStr = verifyTimeString(sharedPref.getString(getString(R.string.AlarmTimePref), defaultTimeStr));
|
||||||
final Button alarmTimeButton = (Button) getActivity().findViewById(R.id.alarm_time);
|
|
||||||
|
|
||||||
// When debugging, set the alarm for one minute's time
|
// When debugging, set the alarm for one minute's time
|
||||||
if (HYPOALARM_DEBUG) {
|
if (HYPOALARM_DEBUG) {
|
||||||
Calendar c = Calendar.getInstance();
|
Calendar c = Calendar.getInstance();
|
||||||
c.add(Calendar.MINUTE, 1);
|
c.add(Calendar.MINUTE, 1);
|
||||||
alarmTimeStr = CalendarToTimeString(c);
|
alarmTimeStr = CalendarToTimeString(c);
|
||||||
}
|
}
|
||||||
|
final Button alarmTimeButton = (Button) getActivity().findViewById(R.id.alarm_time);
|
||||||
alarmTimeButton.setText(alarmTimeStr);
|
alarmTimeButton.setText(alarmTimeStr);
|
||||||
alarmTimeButton.setOnClickListener(new View.OnClickListener() {
|
alarmTimeButton.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
DialogFragment alarmFragment = new TimePickerFragment();
|
DialogFragment alarmFragment = new TimePickerFragment();
|
||||||
alarmFragment.show(getActivity().getSupportFragmentManager(), "alarmTimePicker");
|
alarmFragment.show(getActivity().getSupportFragmentManager(), TIMEPICKER_TAG);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To use a radial time picker, uncomment here:
|
||||||
|
// Use the current set time as the default value for the picker
|
||||||
|
String alarmTimeStr = verifyTimeString(sharedPref.getString(getString(R.string.AlarmTimePref), defaultTimeStr));
|
||||||
|
timePickerDialog.setStartTime(hour, minute);
|
||||||
|
timePickerDialog.setThemeDark(true); // available from version 1.5.3...
|
||||||
|
timePickerDialog.show(getActivity().getSupportFragmentManager(), TIMEPICKER_TAG);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -132,8 +149,13 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
editor.commit();
|
editor.commit();
|
||||||
|
|
||||||
if (!active) {
|
if (!active) {
|
||||||
// Stop any snoozed alerts, and cancel any alarms
|
// Prevent any snoozed alarm from returning
|
||||||
getActivity().stopService(new Intent(getActivity(), AlarmService.class));
|
if (AlarmService.alarmStatus.contentEquals(AlarmService.ALARM_SNOOZE_RUNNING) ||
|
||||||
|
AlarmService.alarmStatus.contentEquals(AlarmService.ALARM_SNOOZED) ||
|
||||||
|
AlarmService.alarmStatus.contentEquals(AlarmService.ALARM_RUNNING)) {
|
||||||
|
AlarmService.setAlarmStatus(AlarmService.ALARM_DISMISSED);
|
||||||
|
}
|
||||||
|
// Cancel any alarms
|
||||||
cancelAllAlarms(getActivity());
|
cancelAllAlarms(getActivity());
|
||||||
Toast.makeText(getActivity(), getString(R.string.alarmCancelled), Toast.LENGTH_SHORT).show();
|
Toast.makeText(getActivity(), getString(R.string.alarmCancelled), Toast.LENGTH_SHORT).show();
|
||||||
} else {
|
} else {
|
||||||
@ -158,10 +180,12 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
@Override
|
@Override
|
||||||
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
|
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
|
||||||
Object value = parent.getItemAtPosition(pos);
|
Object value = parent.getItemAtPosition(pos);
|
||||||
SharedPreferences.Editor editor = sharedPref.edit();
|
if (value != null) {
|
||||||
int minutes = GracePeriodToMinutes(value.toString());
|
SharedPreferences.Editor editor = sharedPref.edit();
|
||||||
editor.putInt(getString(R.string.GracePeriodPref), minutes);
|
int minutes = GracePeriodToMinutes(value.toString());
|
||||||
editor.commit();
|
editor.putInt(getString(R.string.GracePeriodPref), minutes);
|
||||||
|
editor.commit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -223,10 +247,12 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
InputType.TYPE_TEXT_FLAG_MULTI_LINE |
|
InputType.TYPE_TEXT_FLAG_MULTI_LINE |
|
||||||
InputType.TYPE_TEXT_FLAG_CAP_SENTENCES |
|
InputType.TYPE_TEXT_FLAG_CAP_SENTENCES |
|
||||||
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT);
|
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT);
|
||||||
if (messageButton != null) {
|
if (messageButton.getText() != null) {
|
||||||
messageInput.setText(messageButton.getText().toString());
|
messageInput.setText(messageButton.getText().toString());
|
||||||
}
|
}
|
||||||
messageInput.setSelection(messageInput.getText().length());
|
if (messageInput.getText() != null) {
|
||||||
|
messageInput.setSelection(messageInput.getText().length());
|
||||||
|
}
|
||||||
alert.setView(messageInput);
|
alert.setView(messageInput);
|
||||||
alert.setMessage(getString(R.string.setMessage));
|
alert.setMessage(getString(R.string.setMessage));
|
||||||
|
|
||||||
@ -258,10 +284,12 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
// Set time change and boot receiver, so alarm restarts on boot
|
// Set time change and boot receiver, so alarm restarts on boot
|
||||||
ComponentName bootReceiver = new ComponentName(getActivity(), AlarmChangeReceiver.class);
|
ComponentName bootReceiver = new ComponentName(getActivity(), AlarmChangeReceiver.class);
|
||||||
PackageManager pm = getActivity().getPackageManager();
|
PackageManager pm = getActivity().getPackageManager();
|
||||||
pm.setComponentEnabledSetting(bootReceiver,
|
if (pm != null) {
|
||||||
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
|
pm.setComponentEnabledSetting(bootReceiver,
|
||||||
PackageManager.DONT_KILL_APP);
|
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
|
||||||
Log.d("MainActivity", "Setting boot receiver");
|
PackageManager.DONT_KILL_APP);
|
||||||
|
Log.d("MainActivity", "Setting boot receiver");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -285,13 +313,41 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
ringtoneButton.setText(currentRingtone.getTitle(getActivity().getApplicationContext()));
|
ringtoneButton.setText(currentRingtone.getTitle(getActivity().getApplicationContext()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To use a radial timepicker, uncomment this function
|
||||||
|
*
|
||||||
|
@Override
|
||||||
|
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) {
|
||||||
|
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||||
|
|
||||||
|
// Set time preference
|
||||||
|
Calendar cal = Calendar.getInstance();
|
||||||
|
cal.set(Calendar.HOUR_OF_DAY, hourOfDay);
|
||||||
|
cal.set(Calendar.MINUTE, minute);
|
||||||
|
cal.set(Calendar.SECOND, 0);
|
||||||
|
String alarmStr = CalendarToTimeString(cal);
|
||||||
|
|
||||||
|
SharedPreferences.Editor editor = sharedPref.edit();
|
||||||
|
editor.putString(getString(R.string.AlarmTimePref), alarmStr);
|
||||||
|
editor.commit();
|
||||||
|
|
||||||
|
Button alarm_time = (Button) getActivity().findViewById(R.id.alarm_time);
|
||||||
|
alarm_time.setText(alarmStr);
|
||||||
|
|
||||||
|
// Set actual alarm
|
||||||
|
setAlarm(getActivity(), cal);
|
||||||
|
|
||||||
|
// Display toast
|
||||||
|
CharSequence text = getString(R.string.alarmSetToast) + " " + CalendarToTimeString(cal);
|
||||||
|
Toast.makeText(getActivity(), text, Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cancel main alarm, but not grace alarm.
|
* Cancel main alarm, but not grace alarm.
|
||||||
* This should be run whenever the alarm is set.
|
* This should be run whenever the alarm is set.
|
||||||
*
|
|
||||||
* @param context
|
|
||||||
*/
|
*/
|
||||||
public static void cancelAlarm(Context context) {
|
public static void cancelAlarm(Context context) {
|
||||||
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
|
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
|
||||||
@ -314,8 +370,6 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Cancel grace alarm and notifications
|
* Cancel grace alarm and notifications
|
||||||
*
|
|
||||||
* @param context
|
|
||||||
*/
|
*/
|
||||||
public static void cancelGraceAlarm(Context context) {
|
public static void cancelGraceAlarm(Context context) {
|
||||||
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
|
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
|
||||||
@ -328,16 +382,11 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
// Stop any notification of grace period expiry
|
// Stop any notification of grace period expiry
|
||||||
context.stopService(new Intent(context, AlarmNotify.class));
|
context.stopService(new Intent(context, AlarmNotify.class));
|
||||||
|
|
||||||
// Stop any active/snoozed alarms
|
|
||||||
context.stopService(new Intent(context, AlarmService.class));
|
|
||||||
|
|
||||||
Log.d("MainActivity", "Grace alarm cancelled");
|
Log.d("MainActivity", "Grace alarm cancelled");
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Cancels main alarm and grace alarm
|
* Cancels main alarm and grace alarm
|
||||||
* This should only be run when we're disabling the alarm entirely.
|
* This should only be run when we're disabling the alarm entirely.
|
||||||
*
|
|
||||||
* @param context
|
|
||||||
*/
|
*/
|
||||||
public static void cancelAllAlarms(Context context) {
|
public static void cancelAllAlarms(Context context) {
|
||||||
cancelAlarm(context);
|
cancelAlarm(context);
|
||||||
@ -396,8 +445,6 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the grace alarm, to fire at the end of the grace period and send a text message.
|
* Set the grace alarm, to fire at the end of the grace period and send a text message.
|
||||||
*
|
|
||||||
* @param context
|
|
||||||
*/
|
*/
|
||||||
public static void setGraceAlarm(Context context) {
|
public static void setGraceAlarm(Context context) {
|
||||||
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
|
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
|
||||||
@ -430,8 +477,7 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||||
// Use the current set time as the default value for the picker
|
// Use the current set time as the default value for the picker
|
||||||
Button alarmTimeButton = (Button) getActivity().findViewById(R.id.alarm_time);
|
String alarmTimeStr = verifyTimeString(sharedPref.getString(getString(R.string.AlarmTimePref), defaultTimeStr));
|
||||||
String alarmTimeStr = alarmTimeButton.getText().toString();
|
|
||||||
// For selecting a time, the date doesn't matter, just the hour and minute
|
// For selecting a time, the date doesn't matter, just the hour and minute
|
||||||
Calendar cal = TimeStringToCalendar(alarmTimeStr);
|
Calendar cal = TimeStringToCalendar(alarmTimeStr);
|
||||||
int hour = cal.get(Calendar.HOUR_OF_DAY);
|
int hour = cal.get(Calendar.HOUR_OF_DAY);
|
||||||
@ -456,8 +502,6 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
Button alarm_time = (Button) getActivity().findViewById(R.id.alarm_time);
|
Button alarm_time = (Button) getActivity().findViewById(R.id.alarm_time);
|
||||||
alarm_time.setText(alarmStr);
|
alarm_time.setText(alarmStr);
|
||||||
|
|
||||||
// Cancel any snoozed alerts
|
|
||||||
getActivity().stopService(new Intent(getActivity(), AlarmService.class));
|
|
||||||
// Set actual alarm
|
// Set actual alarm
|
||||||
setAlarm(getActivity(), cal);
|
setAlarm(getActivity(), cal);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user