package com.rafali.flickruploader.broadcast; import org.slf4j.LoggerFactory; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.PowerManager; import com.rafali.common.STR; import com.rafali.common.ToolString; import com.rafali.flickruploader.FlickrUploader; import com.rafali.flickruploader.service.UploadService; import com.rafali.flickruploader.tool.Utils; public class AlarmBroadcastReceiver extends BroadcastReceiver { private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(AlarmBroadcastReceiver.class); @Override public void onReceive(Context context, Intent intent) { PowerManager.WakeLock wl = null; try { PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, ""); wl.acquire(); if (Utils.canAutoUploadBool()) { UploadService.checkNewFiles(); } else { initAlarm(); } } catch (Throwable e) { LOG.error(ToolString.stack2string(e)); } finally { if (wl != null) { wl.release(); } } } public static void initAlarm() { try { Context context = FlickrUploader.getAppContext(); if (Utils.canAutoUploadBool()) { if (!Utils.getBooleanProperty(STR.alarmSet, false)) { AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Intent i = new Intent(context, AlarmBroadcastReceiver.class); PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), AlarmManager.INTERVAL_HOUR, pi); Utils.setBooleanProperty(STR.alarmSet, true); } } else { Intent intent = new Intent(context, AlarmBroadcastReceiver.class); PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); alarmManager.cancel(sender); Utils.setBooleanProperty(STR.alarmSet, false); } } catch (Throwable e) { LOG.error(ToolString.stack2string(e)); } } }