【问题标题】:How to schedule alarm weekly in android ?如何在android中每周安排闹钟?
【发布时间】:2014-04-08 21:48:31
【问题描述】:

我想根据所需的日期安排闹钟,例如周日,周二,周四。我已经按时间安排了,但不能像工作日那样做。

下面是代码:

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

【问题讨论】:

    标签: android alarmmanager android-alarms repeatingalarm


    【解决方案1】:

    答案如下:

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

    }

    【讨论】:

      【解决方案2】:

      试试这样的

      Calendar calendar = Calendar.getInstance();
      
           int day = calendar.get(Calendar.DAY_OF_WEEK);
      
          alarmManager.set(AlarmManager.RTC_WAKEUP, startTimmer.getTimeInMillis(),day * 7, pendingIntent1);  
      

      【讨论】:

      • 不,我必须在数据库中设置值,而不是从那里获取值并设置任何其他想法......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 2013-11-19
      • 2012-06-25
      • 1970-01-01
      相关资源
      最近更新 更多