Android Open Source - City-Outdoors-Android Send Feature Content Or Report Service






From Project

Back to project page City-Outdoors-Android.

License

The source code is released under:

Copyright (c) 2012, Edinburgh Council All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are ...

If you think the Android project City-Outdoors-Android 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 uk.co.jarofgreen.cityoutdoors.Service;
// ww  w .jav a  2s  .c o  m


import android.app.IntentService;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import uk.co.jarofgreen.cityoutdoors.API.SubmitFeatureContentCall;
import uk.co.jarofgreen.cityoutdoors.API.SubmitFeatureReportCall;
import uk.co.jarofgreen.cityoutdoors.Model.BaseUploadContentOrReport;
import uk.co.jarofgreen.cityoutdoors.Model.UploadFeatureContent;
import uk.co.jarofgreen.cityoutdoors.Model.UploadFeatureReport;
import uk.co.jarofgreen.cityoutdoors.UI.SendFeatureContentOrReportProgressActivity;
import uk.co.jarofgreen.cityoutdoors.OurApplication;
import uk.co.jarofgreen.cityoutdoors.R;

/**
 * 
 * @author James Baster  <james@jarofgreen.co.uk>
 * @copyright City of Edinburgh Council & James Baster
 * @license Open Source under the 3-clause BSD License
 * @url https://github.com/City-Outdoors/City-Outdoors-Android
 */
public class SendFeatureContentOrReportService extends IntentService {

  public SendFeatureContentOrReportService() {
    super("SendFeatureContentOrReportService");
  }


  protected static final int NOTIFICATION_ID = 1000;
  
  protected void onHandleIntent(Intent intent) {  

    OurApplication ourApp = (OurApplication)getApplication();

    if (ourApp.hasMoreToUpload()) {
      BaseUploadContentOrReport upload = ourApp.getNextToUpload();


      int featureID = upload.hasFeatureID() ? upload.getFeatureID() : -1;

      // ---------- Start Ongoing Notification
      int icon = R.drawable.notification;
      long when = System.currentTimeMillis();
      Notification notification = new Notification(icon, "Sending", when);

      Intent notificationIntent = new Intent(this, SendFeatureContentOrReportProgressActivity.class);
      PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

      notification.setLatestEventInfo(getApplicationContext(), getString(R.string.send_feature_content_or_report_service_notification_content_title), 
          getString(R.string.send_feature_content_or_report_service_notification_content_text), contentIntent);
      notification.flags = Notification.DEFAULT_SOUND;
      notification.flags |= Notification.DEFAULT_VIBRATE;
      notification.flags |= Notification.DEFAULT_LIGHTS;
      notification.flags |= Notification.FLAG_ONGOING_EVENT;

      NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
      mNotificationManager.notify(SendFeatureContentOrReportService.NOTIFICATION_ID, notification);


      //------------ Send
      if (upload instanceof UploadFeatureContent) {
        sendFeatureContent((UploadFeatureContent)upload);
      } else if (upload instanceof UploadFeatureReport) {
        sendFeatureReport((UploadFeatureReport)upload);
      }

      //----------- Remove from que
      ourApp.removeUploadFromQue(upload);

      
      // ---------- End Ongoing Notification
      if (!ourApp.hasMoreToUpload()) {
        mNotificationManager.cancel(SendFeatureContentOrReportService.NOTIFICATION_ID);
      }

    }

  }

  private boolean sendFeatureContent(UploadFeatureContent upload) {
    int attempt = 0;
    SubmitFeatureContentCall call = new SubmitFeatureContentCall(this, (OurApplication)getApplication());
    call.setUpCall(upload);
    while (true) { 
      if (attempt < 20) attempt += 1;
      Log.d("SENDFEATURECONTENT","Trying to send feature content ...");
      try {
        call.execute();
        if (call.getWasResultASuccess()) {
          Log.d("SENDFEATURECONTENT","Sent");
          upload.cleanUp(this);
          return true;
        }
      } catch (Exception e) {
        e.printStackTrace();
        if (e.getMessage() != null) Log.d("SENDFEATURECONTENT",e.getMessage());
      }   
      try { Thread.sleep(Math.min(60000,(long)Math.pow(2,attempt)*1000)); } catch (InterruptedException ie) {}
    }
  }


  private boolean sendFeatureReport(UploadFeatureReport upload) {
    int attempt = 0;
    SubmitFeatureReportCall call = new SubmitFeatureReportCall(this, (OurApplication)getApplication());
    call.setUpCall(upload);
    while (true) { 
      if (attempt < 20) attempt += 1;
      Log.d("SENDFEATUREREPORT","Trying to send feature report ...");
      try {
        call.execute();
        if (call.getWasResultASuccess()) {
          Log.d("SENDFEATUREREPORT","Sent");
          upload.cleanUp(this);
          return true;
        }
      } catch (Exception e) {
        e.printStackTrace();
        if (e.getMessage() != null) Log.d("SENDFEATUREREPORT",e.getMessage());
      }   
      try { Thread.sleep(Math.min(60000,(long)Math.pow(2,attempt)*1000)); } catch (InterruptedException ie) {}
    }
  }  

}




Java Source Code List

uk.co.jarofgreen.cityoutdoors.OurApplication.java
uk.co.jarofgreen.cityoutdoors.Storage.java
uk.co.jarofgreen.cityoutdoors.API.BaseCall.java
uk.co.jarofgreen.cityoutdoors.API.BaseSubmitContentOrReportCall.java
uk.co.jarofgreen.cityoutdoors.API.CheckCurrentUserCall.java
uk.co.jarofgreen.cityoutdoors.API.CollectionCall.java
uk.co.jarofgreen.cityoutdoors.API.CollectionsCall.java
uk.co.jarofgreen.cityoutdoors.API.FeatureCall.java
uk.co.jarofgreen.cityoutdoors.API.FeatureFavouriteCall.java
uk.co.jarofgreen.cityoutdoors.API.FeaturesCall.java
uk.co.jarofgreen.cityoutdoors.API.IndexCall.java
uk.co.jarofgreen.cityoutdoors.API.InformationNeededFromContext.java
uk.co.jarofgreen.cityoutdoors.API.LogInOrSignUpCall.java
uk.co.jarofgreen.cityoutdoors.API.SubmitFeatureCheckinQuestionFreeTextAnswerCall.java
uk.co.jarofgreen.cityoutdoors.API.SubmitFeatureCheckinQuestionHigherOrLowerAnswerCall.java
uk.co.jarofgreen.cityoutdoors.API.SubmitFeatureCheckinQuestionMultipleChoiceAnswerCall.java
uk.co.jarofgreen.cityoutdoors.API.SubmitFeatureContentCall.java
uk.co.jarofgreen.cityoutdoors.API.SubmitFeatureReportCall.java
uk.co.jarofgreen.cityoutdoors.Model.BaseUploadContentOrReport.java
uk.co.jarofgreen.cityoutdoors.Model.Collection.java
uk.co.jarofgreen.cityoutdoors.Model.Content.java
uk.co.jarofgreen.cityoutdoors.Model.FeatureCheckinQuestionContent.java
uk.co.jarofgreen.cityoutdoors.Model.FeatureCheckinQuestionFreeText.java
uk.co.jarofgreen.cityoutdoors.Model.FeatureCheckinQuestionHigherOrLower.java
uk.co.jarofgreen.cityoutdoors.Model.FeatureCheckinQuestionMultipleChoice.java
uk.co.jarofgreen.cityoutdoors.Model.FeatureCheckinQuestionPossibleAnswer.java
uk.co.jarofgreen.cityoutdoors.Model.FeatureCheckinQuestion.java
uk.co.jarofgreen.cityoutdoors.Model.FeatureCheckin.java
uk.co.jarofgreen.cityoutdoors.Model.FeatureFavourite.java
uk.co.jarofgreen.cityoutdoors.Model.Feature.java
uk.co.jarofgreen.cityoutdoors.Model.ItemField.java
uk.co.jarofgreen.cityoutdoors.Model.Item.java
uk.co.jarofgreen.cityoutdoors.Model.UploadFeatureContent.java
uk.co.jarofgreen.cityoutdoors.Model.UploadFeatureReport.java
uk.co.jarofgreen.cityoutdoors.Service.LoadDataIfStaleService.java
uk.co.jarofgreen.cityoutdoors.Service.LoadDataService.java
uk.co.jarofgreen.cityoutdoors.Service.LoadUserDataService.java
uk.co.jarofgreen.cityoutdoors.Service.SendFeatureContentOrReportService.java
uk.co.jarofgreen.cityoutdoors.Service.SendFeatureFavouriteService.java
uk.co.jarofgreen.cityoutdoors.UI.AboutActivity.java
uk.co.jarofgreen.cityoutdoors.UI.AboutLegalActivity.java
uk.co.jarofgreen.cityoutdoors.UI.BaseActivity.java
uk.co.jarofgreen.cityoutdoors.UI.BaseListActivity.java
uk.co.jarofgreen.cityoutdoors.UI.BaseMonthlyActivity.java
uk.co.jarofgreen.cityoutdoors.UI.BaseNewFeatureContentOrReportActivity.java
uk.co.jarofgreen.cityoutdoors.UI.BrowseMapActivity.java
uk.co.jarofgreen.cityoutdoors.UI.CollectionActivity.java
uk.co.jarofgreen.cityoutdoors.UI.CollectionsActivity.java
uk.co.jarofgreen.cityoutdoors.UI.FavouritesActivity.java
uk.co.jarofgreen.cityoutdoors.UI.FeatureActivity.java
uk.co.jarofgreen.cityoutdoors.UI.FeatureCheckinQuestionExplanationActivity.java
uk.co.jarofgreen.cityoutdoors.UI.FeatureChildrenActivity.java
uk.co.jarofgreen.cityoutdoors.UI.LogInOrSignUpActivity.java
uk.co.jarofgreen.cityoutdoors.UI.LogInTwitterActivity.java
uk.co.jarofgreen.cityoutdoors.UI.MainActivity.java
uk.co.jarofgreen.cityoutdoors.UI.NewFeatureContentActivity.java
uk.co.jarofgreen.cityoutdoors.UI.NewFeatureReportActivity.java
uk.co.jarofgreen.cityoutdoors.UI.PreferencesActivity.java
uk.co.jarofgreen.cityoutdoors.UI.SendFeatureContentOrReportProgressActivity.java
uk.co.jarofgreen.cityoutdoors.UI.SplashActivity.java
uk.co.jarofgreen.cityoutdoors.UI.TermsAndConditionsActivity.java
uk.co.jarofgreen.cityoutdoors.UI.TitleBar.java
uk.co.jarofgreen.cityoutdoors.UI.ViewImageActivity.java
uk.co.jarofgreen.cityoutdoors.UI.WhatsOnActivity.java
uk.co.jarofgreen.cityoutdoors.UI.WildlifeActivity.java