/******************************************************************************* * Created by Orlando Aliaga * Copyright 2015 Prey Inc. All rights reserved. * License: GPLv3 * Full license at "/LICENSE" ******************************************************************************/ package com.prey; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import java.util.Calendar; import com.prey.receivers.AlarmScheduledReceiver; public class PreyScheduled { private static PreyScheduled instance = null; private Context context = null; private int minute = 0; private AlarmManager alarmMgr = null; private PendingIntent alarmIntent = null; private PreyScheduled(Context context) { this.context = context; } public synchronized static PreyScheduled getInstance(Context context) { if (instance == null) { instance = new PreyScheduled(context); } return instance; } public void run(int interval) { final Context ctx = context; if (minute != interval && PreyConfig.getPreyConfig(ctx).isScheduled() && interval > 0) { reset(); minute = interval; Intent intent = new Intent(context, AlarmScheduledReceiver.class); alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0); alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT) { alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * interval, alarmIntent); } else { alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * interval, alarmIntent); } PreyLogger.d("_____________start scheduled [" + minute + "] alarmIntent"); } } public void reset() { if (alarmMgr != null) { PreyLogger.d("_________________shutdown scheduled [" + minute + "]alarmIntent"); alarmMgr.cancel(alarmIntent); } } }