如何在android中每周安排闹钟?

时间:2014-03-06 10:18:29

标签: android alarmmanager android-alarms repeatingalarm

我想根据所需的日期安排警报。周日,周二,周四。我按照时间安排了它,但不能按周工作。

以下是代码:

private void StartScheduler(Context context) {

       Calendar startTimmer = Calendar.getInstance();
       startTimmer.setTimeZone(TimeZone.getDefault());        
       startTimmer.set(Calendar.HOUR_OF_DAY,sHour);
       startTimmer.set(Calendar.MINUTE,sMinute);
       startTimmer.set(Calendar.SECOND,00); 

       AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);         
       Intent StartAlarmTime = new Intent(Schedule_details.this, MyAlaramStartReceiver.class);         
       PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, 0, StartAlarmTime, 0);

       alarmManager.set(AlarmManager.RTC_WAKEUP, startTimmer.getTimeInMillis(),pendingIntent1);     
       Log.d("<<My-Start-Alarm>>", "ALARM Set To Start At: " + startTimmer.getTime().toLocaleString());
}

2 个答案:

答案 0 :(得分:0)

以下是答案:

public class MyReceiver extends BroadcastReceiver {
DBAdapter mDba;
SQLiteDatabase mDb;
Ringtone rt;
MediaPlayer mp;
AlertDialog.Builder alertbox;
Context ctx;

@Override
public void onReceive(Context context, Intent intent) {

    DBHelper mDbh = new DBHelper(context, null, null, 1);
    mDb = mDbh.getWritableDatabase();
    mDb.setLockingEnabled(true);
    mDba = new DBAdapter(context);
    mDba.open();
    Cursor cr = mDb.query("mReminderEntry", null, null, null, null,
            null, null);
    if (cr.equals(null)) {
        System.out.println("No Data Found");
    } else {
        Date d = new Date();
        Calendar calendar = Calendar.getInstance();
        int day = calendar.get(Calendar.DAY_OF_WEEK);
        String today = null;
        if (day == 2) {
            today = "Monday";
        } else if (day == 3) {
            today = "Tuesday";
        } else if (day == 4) {
            today = "Wednesday";
        } else if (day == 5) {
            today = "Thursday";
        } else if (day == 6) {
            today = "Friday";
        } else if (day == 7) {
            today = "Saturday";
        } else if (day == 1) {
            today = "Sunday";
        }

        int system_hour = d.getHours();
        int system_minute = d.getMinutes();
        cr.moveToFirst();
        for (int i = 0; i < cr.getCount(); i++) {
            if (cr.getString(3).equals(system_hour + ":" + system_minute)
                    && cr.getString(1).equals("Daily")) {
                Intent scheduledIntent = new Intent(context, MyScheduledActivity.class);
                scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(scheduledIntent);

                break;

            } else if (cr.getString(3).equals(
                    system_hour + ":" + system_minute)
                    && cr.getString(1).equals(today)) {

                Intent scheduledIntent = new Intent(context, MyScheduledActivity.class);
                scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(scheduledIntent);

                break;
            } else {
                System.out.println("No Matching");
            }
            cr.moveToNext();
        }
    }
    cr.close();
    mDba.close();
}

}

答案 1 :(得分:0)

尝试这样的事情

Calendar calendar = Calendar.getInstance();

     int day = calendar.get(Calendar.DAY_OF_WEEK);

    alarmManager.set(AlarmManager.RTC_WAKEUP, startTimmer.getTimeInMillis(),day * 7, pendingIntent1);