android.app.AlarmManager#setAndAllowWhileIdle ( )源码实例Demo

下面列出了android.app.AlarmManager#setAndAllowWhileIdle ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Amadeus   文件: AlarmBootReceiver.java
@Override
public void onReceive(Context context, Intent intent) {

    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);

    if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())
            && settings.getBoolean("alarm_toggle", false)) {
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(
                Context.ALARM_SERVICE);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
                Alarm.ALARM_ID, new Intent(context, AlarmReceiver.class), 0);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            alarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, settings.getLong("alarm_time", 0), pendingIntent);
        } else {
            alarmManager.set(AlarmManager.RTC_WAKEUP, settings.getLong("alarm_time", 0), pendingIntent);
        }
        Log.d(TAG, "Alarm has been recovered");
    }

}
 
源代码2 项目: PresencePublisher   文件: Publisher.java
private void scheduleFor(long nextSchedule, boolean ignoreBattery) {
    AlarmManager alarmManager = (AlarmManager) applicationContext.getSystemService(Context.ALARM_SERVICE);
    if (alarmManager == null) {
        HyperLog.e(TAG, "Unable to get alarm manager, cannot schedule!");
        return;
    }
    alarmManager.cancel(scheduledIntent);
    HyperLog.i(TAG, "Next run at " + DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(new Date(nextSchedule)));
    sharedPreferences.edit().putLong(NEXT_SCHEDULE, nextSchedule).apply();
    NotificationManagerCompat.from(applicationContext)
            .notify(NOTIFICATION_ID, NotificationFactory.getNotification(applicationContext, lastSuccess, nextSchedule));
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (ignoreBattery) {
            alarmManager.setAlarmClock(new AlarmManager.AlarmClockInfo(nextSchedule, scheduledIntent), scheduledIntent);
        } else {
            alarmManager.setAndAllowWhileIdle(RTC_WAKEUP, nextSchedule, scheduledIntent);
        }
    } else {
        alarmManager.set(RTC_WAKEUP, nextSchedule, scheduledIntent);
    }
}
 
源代码3 项目: FairEmail   文件: EntityMessage.java
static void snooze(Context context, long id, Long wakeup) {
    Intent snoozed = new Intent(context, ServiceUI.class);
    snoozed.setAction("wakeup:" + id);
    PendingIntent pi = PendingIntent.getService(context, ServiceUI.PI_WAKEUP, snoozed, PendingIntent.FLAG_UPDATE_CURRENT);

    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    if (wakeup == null || wakeup == Long.MAX_VALUE) {
        Log.i("Cancel snooze id=" + id);
        am.cancel(pi);
    } else {
        Log.i("Set snooze id=" + id + " wakeup=" + new Date(wakeup));
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M)
            am.set(AlarmManager.RTC_WAKEUP, wakeup, pi);
        else
            am.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, wakeup, pi);
    }
}
 
源代码4 项目: AcDisplay   文件: BaseStickyService.java
@SuppressLint("NewApi")
private void remoteRestartService() {
    Timber.d("Remote restart service.");
    final Intent intent = new Intent(this, getClass());
    final PendingIntent pi = PendingIntent.getService(this, code(), intent,
            PendingIntent.FLAG_UPDATE_CURRENT);

    // Ask alarm manger to restart us.
    AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    if (Device.hasMarshmallowApi()) {
        alarm.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,
                System.currentTimeMillis() + PENDING_INTENT_RESTART_DELAY,
                pi);
    } else alarm.set(AlarmManager.RTC_WAKEUP,
            System.currentTimeMillis() + PENDING_INTENT_RESTART_DELAY,
            pi);
}
 
源代码5 项目: tracker-control-android   文件: ServiceTileMain.java
public void onClick() {
    Log.i(TAG, "Click");

    // Cancel set alarm
    AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(WidgetAdmin.INTENT_ON);
    intent.setPackage(getPackageName());
    PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    am.cancel(pi);

    // Check state
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    boolean enabled = !prefs.getBoolean("enabled", false);
    prefs.edit().putBoolean("enabled", enabled).apply();
    if (enabled)
        ServiceSinkhole.start("tile", this);
    else {
        ServiceSinkhole.stop("tile", this, false);

        // Auto enable
        int auto = Integer.parseInt(prefs.getString("auto_enable", "0"));
        if (auto > 0) {
            Log.i(TAG, "Scheduling enabled after minutes=" + auto);
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M)
                am.set(AlarmManager.RTC_WAKEUP, new Date().getTime() + auto * 60 * 1000L, pi);
            else
                am.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, new Date().getTime() + auto * 60 * 1000L, pi);
        }
    }
}
 
源代码6 项目: NetGuard   文件: ServiceTileMain.java
public void onClick() {
    Log.i(TAG, "Click");

    // Cancel set alarm
    AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(WidgetAdmin.INTENT_ON);
    intent.setPackage(getPackageName());
    PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    am.cancel(pi);

    // Check state
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    boolean enabled = !prefs.getBoolean("enabled", false);
    prefs.edit().putBoolean("enabled", enabled).apply();
    if (enabled)
        ServiceSinkhole.start("tile", this);
    else {
        ServiceSinkhole.stop("tile", this, false);

        // Auto enable
        int auto = Integer.parseInt(prefs.getString("auto_enable", "0"));
        if (auto > 0) {
            Log.i(TAG, "Scheduling enabled after minutes=" + auto);
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M)
                am.set(AlarmManager.RTC_WAKEUP, new Date().getTime() + auto * 60 * 1000L, pi);
            else
                am.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, new Date().getTime() + auto * 60 * 1000L, pi);
        }
    }
}
 
源代码7 项目: Slide   文件: NotificationJobScheduler.java
public void start(Context c) {
    AlarmManager manager = (AlarmManager) c.getSystemService(Context.ALARM_SERVICE);
    int interval = 1000 * 60 * Reddit.notificationTime;
    long currentTime = System.currentTimeMillis();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        manager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, currentTime + interval, pendingIntent);
    } else {
        manager.set(AlarmManager.RTC_WAKEUP, currentTime + interval, pendingIntent);
    }
}
 
void setAlarm(AlarmModel alarm) {
    alarm.setActive(1);
    getAlarmDB().update(alarm);

    Calendar calendar = new GregorianCalendar();
    calendar.set(Calendar.HOUR_OF_DAY, alarm.getHour());
    calendar.set(Calendar.MINUTE, alarm.getMinute());
    calendar.set(Calendar.SECOND, alarm.getSecond());
    calendar.set(Calendar.DAY_OF_MONTH, alarm.getDay());
    calendar.set(Calendar.MONTH, alarm.getMonth() - 1);
    calendar.set(Calendar.YEAR, alarm.getYear());

    Log.e(TAG, alarm.getAlarmId() + " - " + calendar.getTime().toString());

    int alarmId = alarm.getAlarmId();

    Intent intent = new Intent(mContext, AlarmReceiver.class);
    intent.putExtra("intentType", ADD_INTENT);
    intent.putExtra("PendingId", alarm.getId());

    PendingIntent alarmIntent = PendingIntent.getBroadcast(mContext, alarmId, intent, 0);
    AlarmManager alarmManager = this.getAlarmManager();

    String scheduleType = alarm.getScheduleType();

    if (scheduleType.equals("once")) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            alarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmIntent);
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmIntent);
        } else {
            alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmIntent);
        }
    } else if (scheduleType.equals("repeat")) {
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarm.getInterval() * 1000, alarmIntent);
    } else {
        Log.d(TAG, "Schedule type should either be once or repeat");
        return;
    }

    this.setBootReceiver();
}
 
void snoozeAlarm(AlarmModel alarm) {
    Calendar calendar = new GregorianCalendar();
    calendar.set(Calendar.HOUR_OF_DAY, alarm.getHour());
    calendar.set(Calendar.MINUTE, alarm.getMinute());
    calendar.set(Calendar.SECOND, alarm.getSecond());
    calendar.set(Calendar.DAY_OF_MONTH, alarm.getDay());
    calendar.set(Calendar.MONTH, alarm.getMonth() - 1);
    calendar.set(Calendar.YEAR, alarm.getYear());

    // set snooze interval
    calendar.add(Calendar.MINUTE, alarm.getSnoozeInterval());

    alarm.setSecond(calendar.get(Calendar.SECOND));
    alarm.setMinute(calendar.get(Calendar.MINUTE));
    alarm.setHour(calendar.get(Calendar.HOUR_OF_DAY));
    alarm.setDay(calendar.get(Calendar.DAY_OF_MONTH));
    alarm.setMonth(calendar.get(Calendar.MONTH) - 1);
    alarm.setYear(calendar.get(Calendar.YEAR));

    alarm.setAlarmId((int) System.currentTimeMillis());

    getAlarmDB().update(alarm);

    Log.e(TAG, "snooze data - " + alarm.toString());

    int alarmId = alarm.getAlarmId();

    Intent intent = new Intent(mContext, AlarmReceiver.class);
    intent.putExtra("intentType", ADD_INTENT);
    intent.putExtra("PendingId", alarm.getId());

    PendingIntent alarmIntent = PendingIntent.getBroadcast(mContext, alarmId, intent, 0);
    AlarmManager alarmManager = this.getAlarmManager();

    String scheduleType = alarm.getScheduleType();

    if (scheduleType.equals("once")) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            alarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmIntent);
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmIntent);
        } else {
            alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmIntent);
        }
    } else if (scheduleType.equals("repeat")) {
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarm.getInterval() * 1000, alarmIntent);
    } else {
        Log.d(TAG, "Schedule type should either be once or repeat");
    }
}
 
源代码10 项目: Pedometer   文件: API23Wrapper.java
public static void setAlarmWhileIdle(AlarmManager am, int type, long time,
                                     PendingIntent intent) {
    am.setAndAllowWhileIdle(type, time, intent);
}