具有特定日期的Android闹钟设置

标签 android calendar alarmmanager notificationmanager

我想在特定日期设置闹钟通知。 然后我目前正在将 AmarmManager 与 NotificationManager 一起使用。 当我从 dateDialog 设置选定日期时,闹钟正在工作。 如何将日历值放在固定时间的闹钟上? 我想每天在固定时间重复闹钟,例如早上 9:00。 目前,警报忽略特定日期的时间。 你可以帮帮我吗?非常感谢。

confirmButton.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View v) {
            //set alarm with expiration date                
            am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
            setOneTimeAlarm();
            Toast.makeText(fridgeDetails.this, "Alarm automatic set", Toast.LENGTH_SHORT).show();
            setResult(RESULT_OK);
            finish();
        }
        public void setOneTimeAlarm() {
        c.set(Calendar.HOUR_OF_DAY, 10);
        c.set(Calendar.MINUTE, 0);
        c.set(expiredYear, expiredMonth, expiredDay);
        Intent myIntent = new Intent(fridgeDetails.this, AlarmService.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(fridgeDetails.this, 
                        0, myIntent, PendingIntent.FLAG_ONE_SHOT);
        am.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);

        }
    });


private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() 
{
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        expiredYear = year;
        expiredMonth = monthOfYear;
        expiredDay = dayOfMonth;
        displayDate();
    }
};  

public class AlarmService extends BroadcastReceiver{
NotificationManager nm;
@Override
public void onReceive(Context context, Intent intent) {
    nm = (NotificationManager) context
            .getSystemService(Context.NOTIFICATION_SERVICE);
          CharSequence from = "Check your fridge";
          CharSequence message = "It's time to eat!";
          PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
            new Intent(), 0);
          Notification notif = new Notification(R.drawable.ic_launcher,
            "Keep Fridge", System.currentTimeMillis());
          notif.setLatestEventInfo(context, from, message, contentIntent);
          nm.notify(1, notif);
         }  
}

最佳答案

如果你想在特定月份的日期播放闹钟,假设你想在 2012 年 6 月 11 日播放闹钟,那么你应该这样指定,但是 6 月是 6 个月,那么你应该在 Calender.Month 中指定 5。

Calendar cal=Calendar.getInstance();
cal.set(Calendar.MONTH,5);
cal.set(Calendar.YEAR,2012);
cal.set(Calendar.DAY_OF_MONTH,11);

cal.set(Calendar.HOUR_OF_DAY,16);
cal.set(Calendar.MINUTE,10);
cal.set(Calendar.SECOND,0);

Intent _myIntent = new Intent(getApplicationContext(), ReceiverClass.class);
PendingIntent _myPendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 123, _myIntent, PendingIntent.FLAG_UPDATE_CURRENT|  Intent.FILL_IN_DATA);
AlarmManager _myAlarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
//_myAlarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (10 * 1000), _myPendingIntent);
_myAlarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), _myPendingIntent);  

关于具有特定日期的Android闹钟设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8340096/

相关文章:

android - Android 中 AlarmManager 行为的说明

android - 无法停止 Android 中的 Activity

android listview OpenGLRenderer 和纹理问题?

php - MySQL 和 PHP : Get regularly dates from one starting date

php - MYSQL/PHP 帮助 - 从原始预订两侧的表格中选择下一个可用日期

java - 如何每 15 分钟运行一次 android 函数,特别是每天 15 分钟?

java - setText(String) 不适用于 TextView

android - 在 Android 中执行 Dalvik 堆限制时是否计算共享内存?

c# - 按天数过滤日期列表

flutter - 请问您在flutter中设置插件的约束是什么?