Android Open Source - Robook Updater Service






From Project

Back to project page Robook.

License

The source code is released under:

MIT License

If you think the Android project Robook listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package unipg.dmi.robook;
/*from w ww.  j  a  va2  s  .  c  o  m*/
import java.io.IOException;
import java.net.MalformedURLException;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.facebook.android.Util;

import android.app.Service;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.Toast;

/**
 * UpdaterService monitora la pagina Facebook per prendere i valori aggiornati
 * di Likes di ogni squadra e lo passa al MainActivity
 * 
 * @author Abdul Rasheed Tutakhail
 * 
 */
public class UpdaterService extends Service {

  private static final String TAG = "UpdaterService";
  private boolean Flag = false;
  private Updater updater;
  boolean flagA = false;
  boolean flagB = false;
  SharedPreferences prefs;
  SharedPreferences.Editor editor;
  String ret = "";
  int likes;
  Long sleepy = 2000L;
  static int apple = 0;
  static int androidd = 0;
  static int appleOld = 0;
  static int androiddOld = 0;
  static int contatore = 0;
  static int var1 = 0;
  static int var2 = 0;

  @Override
  public IBinder onBind(Intent intent) {
    return null;
  }

  @Override
  public void onCreate() {
    super.onCreate();
    this.updater = new Updater();
    prefs = PreferenceManager
        .getDefaultSharedPreferences(getApplicationContext());
    editor = prefs.edit();
    editor.putInt("POSTA", 987654321);
    editor.putInt("POSTB", 987654321);
    editor.putString("FanA", "");
    editor.putString("FanB", "");
    editor.commit();

    // editor.apply();
    Log.d(TAG, "Created");

  }

  @Override
  public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, flags, startId);
    this.Flag = true;
    if (!this.updater.isAlive()) {
      this.updater.start();
      Log.d(TAG, "Started");

    }

    return START_STICKY;

  }

  @Override
  public void onDestroy() {
    super.onDestroy();
    this.Flag = false;
    this.updater.interrupt();
    this.updater = null;
    Log.d(TAG, "onDestroyed");
  }

  private class Updater extends Thread {
    public Updater() {
      super("UpdaterService-Updater");
    }

    /**
     * Quando il Flag  True, viene eseguito questo metodo. In effetti vieni
     * fatto 4 chiamate GET. Nelle Prime due chiamate riceviamo il numero di
     * Likes. Nelle ultime due invece riceviamo il nome del ultima persona
     * che ha messo Mi Piace sul post.
     */
    @Override
    public void run() {

      UpdaterService updaterService = UpdaterService.this;
      while (updaterService.Flag) {
        Log.d(TAG, "Updater running");

        try {

          JSONObject post1 = new JSONObject();

          post1.put("method", "GET");
          post1.put("relative_url",
              "259240967554711_559947950817343/?fields=likes.limit(1).summary(true)&"
                  + prefs.getString("AKEY", ""));

          JSONObject post2 = new JSONObject();

          post2.put("method", "GET");
          post2.put("relative_url",
              "259240967554711_559948050817333/?fields=likes.limit(1).summary(true)&"
                  + prefs.getString("BKEY", ""));

          JSONObject post3 = new JSONObject();
          post3.put("method", "GET");
          post3.put("relative_url",
              "259240967554711_559947950817343/?fields=likes{name}&"
                  + prefs.getString("AKEY", ""));

          JSONObject post4 = new JSONObject();
          post4.put("method", "GET");
          post4.put("relative_url",
              "259240967554711_559948050817333/?fields=likes{name}&"
                  + prefs.getString("BKEY", ""));

          final JSONArray batch_array = new JSONArray();

          batch_array.put(post1);
          batch_array.put(post2);
          batch_array.put(post3);
          batch_array.put(post4);

          final Bundle args = new Bundle();
          args.putString("access_token", prefs.getString("BKEY", ""));
          args.putString("batch", batch_array.toString());

          String url = "https://graph.facebook.com";

          ret = Util.openUrl(url, "POST", args);
          JSONArray arr = new JSONArray(ret);

          for (int i = 0; i < arr.length(); i++) {
            // Qui viene gestito la risposta JSON appartenente ai
            // numero di Likes
            if (i == 0 || i == 1) {

              JSONObject obj = arr.getJSONObject(i);
              String str = obj.getString("body");
              // Vengono tolti i Backslash ridondanti nella
              // risposta JSON dal Facebook
              str.replaceAll("\\\\", "");
              JSONObject obj1 = new JSONObject(str);
              if (obj1.has("likes")) {
                JSONObject obj2 = obj1.getJSONObject("likes");
                JSONObject obj3 = obj2.getJSONObject("summary");
                likes = obj3.getInt("total_count");
              }
              // Se non abbiamo il campo likes nella risposta
              // JSON, allora significa che quel post non ha
              // nessun Like.
              else {

                likes = 0;
              }
              if (i == 0) {
                Log.d(TAG, "Earlier Value of likes A was"
                    + prefs.getInt("POSTA", 0));
                editor.putInt("POSTA", likes);
                Log.d(TAG, "New Value entered in first post is"
                    + likes);

                androidd = likes;

              } else if (i == 1) {
                Log.d(TAG, "Earlier Value of likes B was"
                    + prefs.getInt("POSTB", 0));

                editor.putInt("POSTB", likes);
                Log.d(TAG,
                    "new Value entered in second post is"
                        + likes);
                apple = likes;

              }
              // var1 e var2 vengono utilizzati per continuare il
              // gioco basandosi sui valori nuovi di Likes delle
              // due squadre.
              var1 = androidd - androiddOld;
              var2 = apple - appleOld;

              if (var1 < 0) {
                var1 = 0;
              }

              if (var2 < 0) {
                var2 = 0;
              }

              MainActivity.callAdk(var1, var2);

              androiddOld = androidd;
              appleOld = apple;

            }

            // Stiamo considerando la risposta JSON che contiene i
            // nomi delle ultime persone che hanno messo Mi Piace
            // sui post appartenenti alle squadre.
            else {

              JSONObject obj = arr.getJSONObject(i);
              String str1 = obj.getString("body");
              str1.replaceAll("\\\\", "");
              JSONObject obj1 = new JSONObject(str1);

              if (obj1.has("likes")) {
                JSONObject obj2 = obj1.getJSONObject("likes");
                JSONArray arr1 = obj2.getJSONArray("data");
                JSONObject obj3 = arr1.getJSONObject(0);

                String fan = obj3.getString("name");
                Log.d("Last Fan is", fan);

                if (i == 2) {

                  editor.putString("FanA", fan
                      + " tifa squadra Android :)");
                } else {

                  editor.putString("FanB", fan
                      + " tifa squadra Apple :)");
                }
              } else {

                if (i == 2) {

                  editor.putString("FanA",
                      "Android non ha nessun tifoso :(");
                } else {

                  editor.putString("FanB",
                      "Apple non ha nessun tifoso :(");
                }

                Log.d("Fan", "Nobody supports Team yet :(");
              }

            }
          }

          editor.commit();
          editor.apply();

        }

        catch (JSONException e) {
          updaterService.Flag = false;

          e.printStackTrace();
          Log.e("TAG", e.getMessage());

        } catch (MalformedURLException e) {
          Log.d("reto1", "" + e);
          updaterService.Flag = false;

          e.printStackTrace();
        } catch (IOException e) {
          Log.d("reto2", "" + e);
          updaterService.Flag = false;
          e.printStackTrace();
        }

        Log.d(TAG, "Updater ran");
        try {
          // Numero di millisecondi che l'app monitora la pagina. Il
          // valore di questo delay pu essere cambiato direttamente
          // dalla GUI, premendo il tasto Menu.
          String sleepString = prefs.getString("delay", "2000");
          sleepy = Long.parseLong(sleepString);
          Thread.sleep(sleepy);

          editor.putInt("POSTA", 987654321);
          editor.putInt("POSTB", 987654321);
          editor.putString("FanA", "");
          editor.putString("FanB", "");
          editor.commit();

        } catch (InterruptedException e) {
          Log.d("Value of Delay is: ",
              prefs.getString("delay", "2000"));
          // TODO Auto-generated catch block
          e.printStackTrace();
        }

      }
    }
  }
}




Java Source Code List

com.facebook.AccessTokenSource.java
com.facebook.AccessToken.java
com.facebook.AppEventsConstants.java
com.facebook.AppEventsLogger.java
com.facebook.AppLinkData.java
com.facebook.AuthorizationClient.java
com.facebook.BoltsMeasurementEventListener.java
com.facebook.FacebookAppLinkResolver.java
com.facebook.FacebookAuthorizationException.java
com.facebook.FacebookBroadcastReceiver.java
com.facebook.FacebookDialogException.java
com.facebook.FacebookException.java
com.facebook.FacebookGraphObjectException.java
com.facebook.FacebookOperationCanceledException.java
com.facebook.FacebookRequestError.java
com.facebook.FacebookSdkVersion.java
com.facebook.FacebookServiceException.java
com.facebook.FacebookTimeSpentData.java
com.facebook.GetTokenClient.java
com.facebook.HttpMethod.java
com.facebook.InsightsLogger.java
com.facebook.LegacyHelper.java
com.facebook.LoggingBehavior.java
com.facebook.LoginActivity.java
com.facebook.NativeAppCallAttachmentStore.java
com.facebook.NativeAppCallContentProvider.java
com.facebook.NonCachingTokenCachingStrategy.java
com.facebook.ProgressNoopOutputStream.java
com.facebook.ProgressOutputStream.java
com.facebook.RequestAsyncTask.java
com.facebook.RequestBatch.java
com.facebook.RequestOutputStream.java
com.facebook.RequestProgress.java
com.facebook.Request.java
com.facebook.Response.java
com.facebook.SessionDefaultAudience.java
com.facebook.SessionLoginBehavior.java
com.facebook.SessionState.java
com.facebook.Session.java
com.facebook.Settings.java
com.facebook.SharedPreferencesTokenCachingStrategy.java
com.facebook.TestSession.java
com.facebook.TokenCachingStrategy.java
com.facebook.UiLifecycleHelper.java
com.facebook.android.AsyncFacebookRunner.java
com.facebook.android.DialogError.java
com.facebook.android.FacebookError.java
com.facebook.android.Facebook.java
com.facebook.android.FbDialog.java
com.facebook.android.Util.java
com.facebook.internal.AnalyticsEvents.java
com.facebook.internal.AttributionIdentifiers.java
com.facebook.internal.CacheableRequestBatch.java
com.facebook.internal.FileLruCache.java
com.facebook.internal.ImageDownloader.java
com.facebook.internal.ImageRequest.java
com.facebook.internal.ImageResponseCache.java
com.facebook.internal.ImageResponse.java
com.facebook.internal.Logger.java
com.facebook.internal.NativeProtocol.java
com.facebook.internal.PlatformServiceClient.java
com.facebook.internal.ServerProtocol.java
com.facebook.internal.SessionAuthorizationType.java
com.facebook.internal.SessionTracker.java
com.facebook.internal.UrlRedirectCache.java
com.facebook.internal.Utility.java
com.facebook.internal.Validate.java
com.facebook.internal.WorkQueue.java
com.facebook.internal.package-info.java
com.facebook.model.CreateGraphObject.java
com.facebook.model.GraphLocation.java
com.facebook.model.GraphMultiResult.java
com.facebook.model.GraphObjectList.java
com.facebook.model.GraphObject.java
com.facebook.model.GraphPlace.java
com.facebook.model.GraphUser.java
com.facebook.model.JsonUtil.java
com.facebook.model.OpenGraphAction.java
com.facebook.model.OpenGraphObject.java
com.facebook.model.PropertyName.java
com.facebook.widget.FacebookDialog.java
com.facebook.widget.FacebookFragment.java
com.facebook.widget.FriendPickerFragment.java
com.facebook.widget.GraphObjectAdapter.java
com.facebook.widget.GraphObjectCursor.java
com.facebook.widget.GraphObjectPagingLoader.java
com.facebook.widget.LoginButton.java
com.facebook.widget.PickerFragment.java
com.facebook.widget.PlacePickerFragment.java
com.facebook.widget.ProfilePictureView.java
com.facebook.widget.SimpleGraphObjectCursor.java
com.facebook.widget.ToolTipPopup.java
com.facebook.widget.UserSettingsFragment.java
com.facebook.widget.WebDialog.java
unipg.dmi.robook.AbstractAdkActivity.java
unipg.dmi.robook.MainActivity.java
unipg.dmi.robook.Preview.java
unipg.dmi.robook.UpdaterService.java
unipg.dmi.robook.prefs.java