【问题标题】:how to set multiple alarms using sqlite data?如何使用 sqlite 数据设置多个警报?
【发布时间】:2018-07-16 16:01:22
【问题描述】:

我是 android 新手,在这里我正在为我的工作知识开发一个警报应用程序。

我已经完成了以下:

  • 创建警报并将其存储到 sqlite 数据库中。
  • 获取所有状态为活动的警报。

我尝试了许多 stackoverflow 帖子及其解决方案和其他与我的疑问相关的博客帖子,但我无法为我的问题找到解决方案。

我的问题是我从之前设置的 sqlite 数据库中收到了多个警报时间,我想将所有警报设置为存储的时间。

这里不知道怎么设置。

谁能帮我设置多个闹钟。

我真的很想找人帮忙来学习和体验这些东西,请帮帮我。

谢谢。

【问题讨论】:

  • 你需要警报管理器和待定意图。

标签: android broadcastreceiver alarmmanager


【解决方案1】:

您还需要警报管理器和待处理意图。

for (int i = 0; i < ActivemyAlarms.size(); i++) {

            int mHour = 0,mMin=0;
            String amPm = null;
            int mAlarmId = ActivemyAlarms.get(i).getALARM_ID(); //each alarm has an unique Id ,for differentiate one from another
            String mAlarmTime = ActivemyAlarms.get(i).getALARM_TIME(); // alarm time (11:12:AM)


            if (!(mAlarmTime == null)) {
                String mtime = mAlarmTime;  // alarm time format is 12hr format (ex : 11:12:AM)
                String[] time = mtime.split(":");
                mHour = Integer.parseInt(time[0].trim()); // get 11 hour
                mMin = Integer.parseInt(time[1].trim()); // get 12 min
                amPm = ((time[2].trim()));
            }
            Calendar calendar = Calendar.getInstance();
            calendar.set(calendar.HOUR_OF_DAY, amPm!=null && amPm.equalsIgnoreCase("pm")?(mHour+12):mHour);
            calendar.set(calendar.MINUTE, mMin);
            calendar.set(calendar.SECOND, 0);
            calendar.set(calendar.MILLISECOND, 0);

            Intent intent = new Intent(this,AlarmReceiver.class); //calling my Alarm service class which plays a music on the specific time
            final int _id = (int) System.currentTimeMillis(); // get calendar instance

            //Use Alarm manager and Pending Intent

            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            PendingIntent alarmIntent = PendingIntent.getBroadcast(context, mAlarmId, intent, 0);

            alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmIntent);

}

并取消任何报警调用alarmManager.cancel(PendingIntent) 之类的;

Intent intent = new Intent(this,AlarmReceiver.class);
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, mAlarmId, intent, 0);
alarmManager.cancel(alarmIntent);

【讨论】:

  • 非常感谢...!@Mangal
  • 这里我遇到了一个问题,我无法停止警报声,它在单击停止按钮后继续运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
相关资源
最近更新 更多