标签: repeatingalarm

AlarmManager在错误的时间触发警报

我管理一切都可以创建一个通知服务,用于通过警报触发通知.不幸的是,使用AlarmManager设置闹钟无法正常工作.它在几分钟后发射(不完全是几小时,这表明存在时区问题).重复周期是1周,所以我使用常量INTERVAL_DAY并将其乘以7.为了确保一个PendingIntent不替换另一个,我将dayOfWeek作为第二个参数传递给PendingIntent.getService().我通过记录来检查警报发射时间的正确性:

Log.d(TAG, "next alarm " + df.format(cal.getTime()));
Run Code Online (Sandbox Code Playgroud)

是否真的没有办法列出所有报警集 - 至少是我自己的应用程序?我相信这是追踪错误的唯一方法.

我的代码:

cal.setTimeInMillis(System.currentTimeMillis());
cal.add(Calendar.DATE, 1);
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, minute);
Log.d(TAG, "next alarm " + df.format(cal.getTime()));
Intent showNotificationIntent = new Intent(context, NotificationService.class);
dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
alarmIntent = PendingIntent.getService(context, dayOfWeek, showNotificationIntent, 0);
getAlarmManager(context).setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
    INTERVAL_WEEK, alarmIntent);
Run Code Online (Sandbox Code Playgroud)

我想提供每天报警,但在不同的时间,可以由用户设置.所以我最多使用7个警报,每周应该发射一次.

即使在阅读了类似问题的大量答案之后(我不打算创建一个重复的问题),我也没有设法找到问题.

android alarmmanager repeatingalarm

16
推荐指数
2
解决办法
2万
查看次数

在android中设置重复周日警报

有人可以为设定的重复周日警报提供良好的逻辑吗?我通过使用每周做一次警报

            alarmCalendar.set(Calendar.HOUR, AlarmHrsInInt);
            alarmCalendar.set(Calendar.MINUTE, AlarmMinsInInt);
            alarmCalendar.set(Calendar.SECOND, 0);
            alarmCalendar.set(Calendar.AM_PM, amorpm);

            Long alarmTime = alarmCalendar.getTimeInMillis();

Intent intent = new Intent(Alarm.this, AlarmReciever.class);
                intent.putExtra("keyValue", key);
                PendingIntent pi = PendingIntent.getBroadcast(Alarm.this, key, intent, PendingIntent.FLAG_UPDATE_CURRENT);
                am.setRepeating(AlarmManager.RTC_WAKEUP, alarmTime, 7*1440*60000 , pi); 
Run Code Online (Sandbox Code Playgroud)

警报触发按时触发,7天后会自动触发.

但我的要求是我想选择几天而不是仅仅七天.

类似于每周一,周二,周四上午9:00 - 警报应自动触发.我如何在setRepeating中执行此操作.

有人可以帮我解决这个问题吗?

谢谢!

java android alarmmanager repeatingalarm

13
推荐指数
2
解决办法
3万
查看次数

如何调试应用程序中运行的AlarmManager警报?

我们有一些重复的警报设置,它们在大多数情况下都能正常工作.有时虽然他们卡住了(可能以某种方式取消).如何调试它以确保警报实际上在看起来卡住时关闭?

关于警报被取消的原因:我知道当用户强制从Applications Manager停止您的应用程序时会发生这种情况.系统可以随机取消吗?(比如在杀死整个应用程序以回收资源时?)

android alarmmanager android-alarms repeatingalarm

12
推荐指数
1
解决办法
2034
查看次数

应用更新后,Android AlarmManager会继续运行吗?

从我所看到的情况来看,如果你安排一个无限期重复的警报,它将不会停止运行,直到你重启设备或卸载应用程序.

我想知道,在应用更新的情况下,这些行为如何表现?例如,您从Play商店下载该应用程序的版本1,然后运行该应用程序,此警报开始运行.然后发布版本2并执行自动或手动更新.此警报是否仍在继续运行(或者您是否必须再次启动应用程序才能启动警报)?

在我的场景中,我确实需要这样做,所以我希望答案是它会继续运行.但是,如果您在版本2中更改了警报代码,会发生什么?

android alarmmanager android-alarms repeatingalarm

9
推荐指数
2
解决办法
1744
查看次数

如果当天的警报时间过去,android会阻止警报服务的立即触发

Alarm Manager的参考说明了这一点

如果指定的触发时间是过去的,则会立即触发警报.

我在申请中遇到了这个问题.这是我的警报管理器代码:

Intent myIntent = new Intent(getActivity(), DinnerAlarmReceiver.class);
                pendingDinnerIntent = PendingIntent.getBroadcast(getActivity(), 0, myIntent, 0);

                Calendar calendar = Calendar.getInstance();
                calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
                calendar.set(Calendar.MINUTE, minute);

                alarmManager.set(AlarmManager.RTC_WAKEUP,
                        calendar.getTimeInMillis(), pendingDinnerIntent);
Run Code Online (Sandbox Code Playgroud)

这个问题有解决方法吗?

- - -编辑 - - -

我写了一些代码来估计警报的设定时间是否在当前时间之前.以上部分有相应的变化:

Calendar calendar = Calendar.getInstance();
                long currentTime = calendar.getTimeInMillis();
                calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
                calendar.set(Calendar.MINUTE, minute);
                long setTime = calendar.getTimeInMillis();
                Timestamp setTimestamp = new Timestamp(setTime);
                Timestamp currentTimestamp = new Timestamp(currentTime);
                if (setTimestamp.after(currentTimestamp))
                {
                    alarmManager.set(AlarmManager.RTC_WAKEUP,
                            calendar.getTimeInMillis(), pendingDinnerIntent);
                }
                else
                {
                }
Run Code Online (Sandbox Code Playgroud)

我的应该是什么alarmManager来的情况下,setTimestamp是前currentTimestamp

android alarmmanager android-alarms repeatingalarm

8
推荐指数
1
解决办法
2377
查看次数

使用AlarmManager/BroadcastReceiver在Android的每个星期一重复警报

我想在每个星期一上午9:00和下午05:00重复我的任务.我使用了以下代码,但我无法重复该任务.

活动代码:

public class AndroidScheduledActivity extends Activity {
    /** Called when the activity is first created. */
    int id = 115;
    Intent myIntent;
    PendingIntent pendingIntent;
    AlarmManager alarmManager;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button buttonStart = (Button)findViewById(R.id.start);

        myIntent = new Intent(getBaseContext(), MyScheduledReceiver.class);
        myIntent.putExtra("id", id);
        pendingIntent = PendingIntent.getBroadcast(getBaseContext(), id, myIntent, 0);

        alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

        buttonStart.setOnClickListener(new Button.OnClickListener(){
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                setForMonday();
                finish();
            }});
    }

    public void setForMonday() {
        Calendar calendar = Calendar.getInstance();


        calendar.set(Calendar.DAY_OF_WEEK,2); …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver alarmmanager android-alarms repeatingalarm

7
推荐指数
1
解决办法
6816
查看次数

AlarmManager触发警报超过它在同一天设置的时间,setRepeating

所以基本上我有这个代码,时间返回24小时,每天重复闹钟.

public setAlarm(String time, Context context){
    String[] strTime;

    strTime = time.split(":");

    int hour, min, sec;
    //set when to alarm
    hour = Integer.valueOf(strTime[0]);
    min = Integer.valueOf(strTime[1]);
    sec = 0;

    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR_OF_DAY, hour);
    cal.set(Calendar.MINUTE, min);
    cal.set(Calendar.SECOND, sec);
    //Create a new PendingIntent and add it to the AlarmManager
    Intent intent = new Intent(context, AlarmReceiverActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 19248, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager am = (AlarmManager) context.getSystemService(Activity.ALARM_SERVICE);
    am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
Run Code Online (Sandbox Code Playgroud)

无论如何,问题是当我在上午9点10分设置闹钟时,闹钟将会响起.为什么?如果设置超过系统时间,我希望它不会报警.防爆.系统时间是上午9:10,在上午9点设置闹钟

android alarmmanager android-alarms repeatingalarm

7
推荐指数
1
解决办法
6689
查看次数

更新应用程序时运行警报会发生什么?

我需要弄清楚是否重新启动该警报,因为它是一个定时的服务器轮询,但应该只有一个该警报的实例.

android alarm alarmmanager android-alarms repeatingalarm

5
推荐指数
1
解决办法
69
查看次数

预定的警报管理器无法运行Android

我正在尝试启动一个在特定时间每天重复的警报服务.我已经经历了关于堆栈溢出的很多线程,但没有运气.我按照了几个教程:http://karanbalkar.com/2013/07/tutorial-41-using-alarmmanager-and-broadcastreceiver-in-android/http://javatechig.com/android/repeat-alarm-example -in-机器人

我的服务从未开始,我不明白为什么.以下是我的代码:

我的清单文件:

     <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="17" />

        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.WAKE_LOCK" />
        <uses-permission android:name="android.permission.CAMERA" />
        <uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
<application>
        <service android:name="com.paper.DownloadService" android:enabled="true"/>
                  <receiver android:name="com.paper.MyReceiver" ></receiver>
</application>
Run Code Online (Sandbox Code Playgroud)

我的接收器类:

public class MyReceiver extends BroadcastReceiver
{      
    @Override
    public void onReceive(Context rcontext, Intent intent)
    {
        Log.e("Main Activity", "inside on receive of myreceiver");
       Intent service1 = new Intent(rcontext, DownloadService.class);
       rcontext.startService(service1);

    }   
}
Run Code Online (Sandbox Code Playgroud)

我的服务类:

 public class DownloadService extends Service {
    @Override
    public void …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver alarmmanager android-service repeatingalarm

5
推荐指数
1
解决办法
1万
查看次数

AlarmManager 不适用于 MIUI(谁知道还有什么地方)

我的应用程序为用户提供了在特定时间安排每日通知的选项。我用来AlarmManager实现这种行为。

\n

单击按钮后,我执行以下代码:

\n
val datetimeToAlarm = Calendar.getInstance(Locale.getDefault())\n                /*datetimeToAlarm.set(HOUR_OF_DAY, 21)\n                datetimeToAlarm.set(MINUTE, 0)\n                datetimeToAlarm.set(SECOND, 0)\n                datetimeToAlarm.set(MILLISECOND, 0)*/\n\n                NotificationHelper.createNotificationChannel(\n                    requireContext(),\n                    NotificationManagerCompat.IMPORTANCE_DEFAULT,\n                    false,\n                    weather,\n                    "Daily weather notifications for ${weather.cityName}"\n                )\n\n                NotificationHelper.scheduleNotification(\n                    requireContext(),\n                    datetimeToAlarm,\n                    weather\n                )\n
Run Code Online (Sandbox Code Playgroud)\n

出于测试目的,我还没有设置它必须触发的确切时间。

\n

NotificationHelper我上面使用的类的两种方法:

\n
fun createNotificationChannel(\n            context: Context,\n            importance: Int,\n            showBadge: Boolean,\n            data: Weather,\n            description: String\n        ) {\n\n            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {\n\n                // Format: $placeId-$cityName\n                val channelId = "${data.placeId}-${data.cityName}"\n                val channel = NotificationChannel(channelId, "Weather for ${data.cityName}", importance)\n                channel.description = description\n                channel.setShowBadge(showBadge)\n\n                val notificationManager …
Run Code Online (Sandbox Code Playgroud)

android alarmmanager android-notifications repeatingalarm miui

5
推荐指数
1
解决办法
1020
查看次数