【问题标题】:Android alarm manager安卓报警管理器
【发布时间】:2011-01-17 05:44:25
【问题描述】:

您好,我一直在研究 android 中的警报管理器,想知道是否有如何设置警报的特定时间(或可以使用通知管理器)在特定时间(例如明天下午 12 点)响起。 下面的代码从现在开始将警报设置为 5 秒,因此将其设置为下午 12 点,您可以执行 12:00:00 之类的操作吗?

 Intent intent = new Intent(this, OnetimeAlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, REQUEST_CODE, intent, 0);

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (5 * 1000), sender);
Toast.makeText(this, "Alarm set", Toast.LENGTH_LONG).show();

【问题讨论】:

    标签: java android datetime


    【解决方案1】:

    Java 的日期和时间库很麻烦,但这应该会给你一个想法:

    // the time now
    Calendar calendar = Calendar.newInstance();
    
    // noon tomorrow
    calendar.add(Calendar.DAY_OF_YEAR, 1);
    calendar.set(Calendar.HOUR_OF_DAY, 12);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    
    alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
        Toast.makeText(this, "Alarm set", Toast.LENGTH_LONG).show();
    

    【讨论】:

    • 没问题。不要忘记您可以投票并接受回复 :) 这将使人们有动力回答您的问题
    • 同样的问题 Mike 但我想在纽约时间下午 12 点设置闹钟,无论我的用户在哪个国家!我需要玩 TimeZones,不是吗?你会怎么做?所以我希望我在全球的所有用户都能在完全相同的时间收到警报(当然,如果他们确实选择了)......
    • 嗨休伯特。查看Calendar(TimeZone,Locale) 构造函数。 java.sun.com/j2se/1.5.0/docs/api/java/util/…
    • 是的,可以正常使用:TimeZone tz = TimeZone.getTimeZone("America/New_York");日历 calNewYork = new GregorianCalendar(tz);
    【解决方案2】:
    Calendar calendar = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault());
    

    这应该可以工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      相关资源
      最近更新 更多