Я пытаюсь создать сигнал тревоги Android, который будет отключаться при завершении действия на другом экране (т.е. пользователь вводит ответ в математическую задачу).
Как мне:
- позволяет пользователю устанавливать свой ежедневный будильник на экране с помощью таймера
- реализовать этот сигнал тревоги
- позволяет пользователю отключить будильник, выполнив математическую задачу (или любую
другое действие) на другом экране
Я попытался следовать этому примеру с предложенным решением: Невозможно установить время будильника в Android
но он не воспроизводит рингтон. Я добавил это прямо под строкой
Toast.makeText(BrainBuzzActivity.this, "Alarm has been set.", Toast.LENGTH_LONG).show();
Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
if(alert == null){
// alert is null, using backup
alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
if(alert == null){
// alert backup is null, using 2nd backup
alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
}
}
ОРИГИНАЛ Главная страница (создание намерения)
public class BrainBuzzActivity extends Activity
{
private Button alarm = null;
private AlarmManager alarmManager = null;
Calendar cal = Calendar.getInstance();
static final int DIALOG_TIME = 0;
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarm = (Button) findViewById(R.id.alarm);
alarm.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showDialog(DIALOG_TIME);
}
});
}
protected Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch(id){
case DIALOG_TIME:
dialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
// c.clear();
//c.set(Calendar.YEAR, 2011);
//c.set(Calendar.MONTH, 6);
//c.set(Calendar.DAY_OF_MONTH, 4);
c.set(Calendar.HOUR_OF_DAY, hourOfDay);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, 0);
//c.set(Calendar.MILLISECOND, 0);
Intent intent = new Intent(BrainBuzzActivity.this,AlarmReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(BrainBuzzActivity.this, 0, intent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), AlarmManager.INTERVAL_FIFTEEN_MINUTES, pi);
Toast.makeText(BrainBuzzActivity.this, "Alarm has been set.", Toast.LENGTH_LONG).show();
Intent i = new Intent(BrainBuzzActivity.this, CloudCapture.class);
startActivity(i);
}
},cal.get(Calendar.HOUR_OF_DAY),cal.get(Calendar.MINUTE),false);
break;
}
return dialog;
}