/* * Copyright 2012 Javier Pérez Pacheco and Francisco Díaz Rodriguez * TweetTopics 2.0 * javielinux@gmail.com * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.javielinux.tweetprogrammed; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; import com.android.dataframework.DataFramework; import com.android.dataframework.Entity; import com.javielinux.updatestatus.ServiceUpdateStatus; import com.javielinux.utils.Utils; import java.util.ArrayList; import java.util.Calendar; public class OnAlarmReceiverTweetProgrammed extends BroadcastReceiver { private static final int ALARM_REQUEST_CODE = 0; @Override public void onReceive(Context context, Intent intent) { Log.d(Utils.TAG, "Lanzando tweet programado"); try { DataFramework.getInstance().open(context, Utils.packageName); } catch (Exception e) { e.printStackTrace(); } if (intent.getExtras().containsKey(DataFramework.KEY_ID)) { long id = intent.getExtras().getLong(DataFramework.KEY_ID); Entity prog = new Entity("tweets_programmed", id); Entity ent = new Entity("send_tweets"); ent.setValue("users", prog.getString("users")); ent.setValue("text", prog.getString("text")); ent.setValue("is_sent", 0); ent.setValue("type_id", prog.getString("type_id")); ent.setValue("username_direct", prog.getString("type_id")); ent.setValue("photos", prog.getString("photos")); ent.setValue("tweet_programmed_id", id); ent.setValue("reply_tweet_id", "-1"); ent.setValue("use_geo", "0"); ent.save(); context.startService(new Intent(context, ServiceUpdateStatus.class)); } DataFramework.getInstance().close(); } public static void callNextAlarm(Context cnt) { try { DataFramework.getInstance().open(cnt, Utils.packageName); } catch (Exception e) { e.printStackTrace(); } Entity ent = null; Calendar now = Calendar.getInstance(); ArrayList<Entity> ents = DataFramework.getInstance().getEntityList("tweets_programmed", "is_sent = 0", "date asc"); for (Entity e : ents) { if (ent==null) { if (e.getLong("date")>now.getTimeInMillis()) { ent = e; } } } if (ent!=null) { long id = ent.getId(); long date = ent.getLong("date"); Intent intent = new Intent(cnt, OnAlarmReceiverTweetProgrammed.class); intent.putExtra(DataFramework.KEY_ID, id); PendingIntent pendingIntent = PendingIntent.getBroadcast(cnt, ALARM_REQUEST_CODE, intent, PendingIntent.FLAG_CANCEL_CURRENT); AlarmManager alarmManager = (AlarmManager) cnt.getSystemService(Context.ALARM_SERVICE); //Date d = new Date(date); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(date); alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); Log.d(Utils.TAG, "Programa alarma con id " + id); } DataFramework.getInstance().close(); } /* public static void stopAlarm(Context cnt, long id) { Intent intent = new Intent(cnt, OnAlarmReceiverTweetProgrammed.class); intent.putExtra(DataFramework.KEY_ID, id); PendingIntent sender = PendingIntent.getBroadcast(cnt, 0, intent, 0); AlarmManager am = (AlarmManager)cnt.getSystemService(Context.ALARM_SERVICE); am.cancel(sender); Log.d(Utils.TAG, "Parar alarma con id " + id); } */ }