Как запланировать будильник на неделю в Android?

Я хочу запланировать будильник в соответствии с желаемыми днями. воскресенье, вторник, четверг. Я запланировал это по времени, но не могу сделать это в будние дни.

Ниже приведен код:

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());
}

person Mayank Nema    schedule 06.03.2014    source источник


Ответы (2)


Вот ответ:

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();
}

}

person Mayank Nema    schedule 06.03.2014

Попробуйте что-нибудь вроде этого

Calendar calendar = Calendar.getInstance();

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

    alarmManager.set(AlarmManager.RTC_WAKEUP, startTimmer.getTimeInMillis(),day * 7, pendingIntent1);  
person user2219097    schedule 06.03.2014
comment
нет, не так, я должен установить значение в базе данных, а затем получить значения оттуда и установить, так что любая другая идея сделать это......... - person Mayank Nema; 07.03.2014