0

I'm new to android.I'm doing an android application with alarm Manager.I need to set repeating alarm for thrice in a day like 10AM,2PM,9PM for example.So the alarm should be ringed up those timings every day.Below is the code i tried.But it rings up once as 9PM(ex).How could i resolve this?Thanks.

Code: public class AlarmManagerBroadcastReceiver extends BroadcastReceiver {

final public static String ONE_TIME = "onetime";
public static MediaPlayer mp = null;
Context ctx;

@Override
public void onReceive(Context context, Intent intent) {
    PowerManager pm = (PowerManager) context
            .getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl = pm.newWakeLock(
            PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG");
    // Acquire the lock
    wl.acquire();
    ctx = context;

    mp = MediaPlayer.create(context, R.raw.audio);
    playSound(context, getAlarmUri());

            // The DialogClass will make alert dialog for indication
    Intent i = new Intent(context, DialogClass.class);
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(i);

    // Release the lock
    wl.release();

}

private void playSound(final Context context, Uri alert) {

    Thread background = new Thread(new Runnable() {
        public void run() {
            try {

                mp.start();

            } catch (Throwable t) {
                Log.i("Animation", "Thread  exception " + t);
            }
        }
    });
    background.start();
}

private Uri getAlarmUri() {

    Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
    if (alert == null) {
        alert = RingtoneManager
                .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        if (alert == null) {
            alert = RingtoneManager
                    .getDefaultUri(RingtoneManager.TYPE_RINGTONE);
        }
    }
    return alert;
}

public void SetAlarm(Context context) {

    AlarmManager am = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);

    AlarmManager am1 = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);

    AlarmManager am2 = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);

    Calendar c = Calendar.getInstance();
    c.set(Calendar.HOUR_OF_DAY, 10);
    c.set(Calendar.MINUTE, 0);

    Calendar c1 = Calendar.getInstance();
    c1.set(Calendar.HOUR_OF_DAY, 14);
    c1.set(Calendar.MINUTE, 0);

    Calendar c2 = Calendar.getInstance();
    c2.set(Calendar.HOUR_OF_DAY, 21);
    c2.set(Calendar.MINUTE, 0);

    Intent intent = new Intent(context,
            AlarmManagerBroadcastReceiver.class);
    intent.putExtra(ONE_TIME, Boolean.FALSE);
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);

    am.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, pi);
    am1.setRepeating(AlarmManager.RTC_WAKEUP, c1.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, pi);
    am2.setRepeating(AlarmManager.RTC_WAKEUP, c2.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, pi);

}

...

subbu
  • 45
  • 2
  • 9

1 Answers1

0

Look into the answer of the following..Android Set Multiple Alarms

Hope this helps you a lot.

Community
  • 1
  • 1
Born To Win
  • 3,319
  • 3
  • 19
  • 27