Android Open Source - SurveySDK_android Location Log






From Project

Back to project page SurveySDK_android.

License

The source code is released under:

Apache License

If you think the Android project SurveySDK_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 com.survey.android.util;
//  w  w  w.  j ava 2s . c o  m
import java.io.IOException;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;

import com.survey.android.util.ConstantData;
import com.survey.android.util.Log;
import com.survey.android.util.LocationLog;
import com.survey.android.webclient.RestClient;

import org.json.JSONException;

@SuppressWarnings("unused")
public class LocationLog {
  private static final String TAG = "LocationLog";
  private static Map<String, LocationLog> synchronizedLocationLog = Collections.synchronizedMap(new HashMap<String, LocationLog>());   
  private static long synchronizedLocationLogRefreshedAt;
  public static final long REFRESH_INTERVAL = 1000 * 60 * 120; // 2 HOURS
  
  private String token;
  private String geo_trigger_id;
  private double latitude;
  private double longitude;
  private String reason;
  private long pushtimemillis;
  
  public long getPushTimeMillis() {
    return this.pushtimemillis;
  }  
  
  public LocationLog(String token, String geo_trigger_id, 
      double latitude, double longitude, 
      String reason, long pushtimemillis)  {
    this.token = token;
    this.geo_trigger_id = geo_trigger_id;
    this.latitude = latitude;
    this.longitude = longitude;
    this.reason = reason;
    this.pushtimemillis = pushtimemillis;
  }
  
  public static void SetLocationLog(String token, String geo_trigger_id, 
      double latitude, double longitude, String reason) {
    LocationLog p = null;    
    boolean loglocation = false;
    Log.d(TAG, "(usertoken, geo_trigger_id, reason) : " + "(" + token + "," + geo_trigger_id + "," + reason + ")");  
    Log.d(TAG, "synchronizedLocationLog: " + synchronizedLocationLog);    
    String key = geo_trigger_id + reason;
    
    try {
      // check if list/hashmap of LocationLog exists 
      if (synchronizedLocationLog == null) {
        // create new list/hashmap of LocationLog objects
        synchronized (synchronizedLocationLog) {
          synchronizedLocationLog = Collections.synchronizedMap(new HashMap<String, LocationLog>());
          synchronizedLocationLogRefreshedAt = System.currentTimeMillis();          
        }
      }
      
      synchronized (synchronizedLocationLog) {      
        // check last refresh time and create new collection if over the configured amount of time
        if (System.currentTimeMillis() - synchronizedLocationLogRefreshedAt > REFRESH_INTERVAL) {
          // create new list/hashmap of LocationLog objects
          synchronizedLocationLog = Collections.synchronizedMap(new HashMap<String, LocationLog>());
          synchronizedLocationLogRefreshedAt = System.currentTimeMillis();
        }        
      
        // check if current geo_trigger_id is already present in the hashmap
        if (synchronizedLocationLog.containsKey(key)) {
          p = (LocationLog)synchronizedLocationLog.get(key);
          long currenttimemillis = System.currentTimeMillis();
          // check if this geotrigger has been pushed within the configured interval, 
          // then do nothing
          if (currenttimemillis - p.getPushTimeMillis() < ConstantData.LOCATIONLOG_INTERVAL) {
            Log.d(TAG, "GeoTrigger Fence Event already recorded in last 10 min, Do Nothing");  
            return;
          }
          else
            loglocation = true;
        }
        else {
          // add new LocationLog object to hashmap
          synchronized (synchronizedLocationLog) {          
            p = new LocationLog(token, geo_trigger_id, latitude, longitude, reason, System.currentTimeMillis());
            synchronizedLocationLog.put(key, p);
            loglocation = true;
          }
        }
      }  
      
      // check if locationlog needs to be recorded      
      if (loglocation) {
        Log.d(TAG, "Calling GeoTrigger LocationLog api");
        RestClient.setLocationLog(token, geo_trigger_id, latitude, longitude, reason);        
      }
    } catch (JSONException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}




Java Source Code List

android.UnusedStub.java
com.google.android.gms.BuildConfig.java
com.google.android.gms.BuildConfig.java
com.survey.android.UnusedStub.java
com.survey.android.c2dm.C2DMRegistrationReceiver.java
com.survey.android.c2dm.C2DMTokenRefresher.java
com.survey.android.c2dm.GcmBroadcastReceiver.java
com.survey.android.c2dm.GcmNotificationReceiver.java
com.survey.android.c2dm.GcmRegistrationService.java
com.survey.android.c2dm.RegService.java
com.survey.android.common.PlacesAutoCompleteAdapter.java
com.survey.android.common.Themes.java
com.survey.android.containers.AppContainer.java
com.survey.android.containers.PollContainer.java
com.survey.android.custom_widgets.FontTextView.java
com.survey.android.custom_widgets.PollRatingsScaleLabeled.java
com.survey.android.custom_widgets.PollRatings.java
com.survey.android.custom_widgets.PollSelectionTable.java
com.survey.android.db.SerializationHelper.java
com.survey.android.db.SerializationManager.java
com.survey.android.fragment.AudioRecorderFragment.java
com.survey.android.geofence.GeofenceRemover.java
com.survey.android.geofence.GeofenceRequester.java
com.survey.android.geofence.GeofenceUtils.java
com.survey.android.geofence.LocationServiceErrorMessages.java
com.survey.android.geofence.ReceiveTransitionsIntentService.java
com.survey.android.geofence.SimpleGeofenceStore.java
com.survey.android.geofence.SimpleGeofence.java
com.survey.android.model.AnswerModel.java
com.survey.android.model.CategoryModel.java
com.survey.android.model.CurrentSectionModel.java
com.survey.android.model.Prefs.java
com.survey.android.model.QuestionModel.java
com.survey.android.model.ResponseModel.java
com.survey.android.model.SurveyModel.java
com.survey.android.model.UserModel.java
com.survey.android.services.BackgroundUploader.java
com.survey.android.services.DataBroadcastReceiver.java
com.survey.android.services.DeviceStartUpReceiver.java
com.survey.android.services.GeoSurveyPollService.java
com.survey.android.services.LocationTesterService.java
com.survey.android.services.ReferrerCatcher.java
com.survey.android.session.Configuration.java
com.survey.android.session.Session.java
com.survey.android.util.Base64.java
com.survey.android.util.ConstantData.java
com.survey.android.util.GeoPush.java
com.survey.android.util.GeoTriggerBroadcastReceiver.java
com.survey.android.util.GeoTrigger.java
com.survey.android.util.LocationLog.java
com.survey.android.util.Log.java
com.survey.android.util.StrToIntMap.java
com.survey.android.util.StrToStrMap.java
com.survey.android.util.Toiler.java
com.survey.android.util.WhiteLabel.java
com.survey.android.view.Dashboard.java
com.survey.android.view.Gallery.java
com.survey.android.view.LocalizedFragmentActivity.java
com.survey.android.view.Main.java
com.survey.android.view.Notification.java
com.survey.android.view.Question.java
com.survey.android.view.Survey.java
com.survey.android.view.ThemeCustomizer.java
com.survey.android.view.themed.DashboardThemed.java
com.survey.android.view.themed.MainThemed.java
com.survey.android.view.themed.NotificationThemed.java
com.survey.android.view.themed.QuestionThemed.java
com.survey.android.view.themed.SurveyThemed.java
com.survey.android.webclient.HttpRequest.java
com.survey.android.webclient.HttpsClient.java
com.survey.android.webclient.RestClient.java
com.survey.android.webclient.SurveyHttpClient.java
com.survey.android.webclient.SurveyRequest.java
com.survey.android.webclient.SurveySSLSocketFactory.java
com.survey.android.webclient.SurveyX509TrustManager.java
com.survey.android.widget.Widget.java
com.survey.androiddemo.AppContainer.java
com.survey.androiddemo.LoginActivity.java
com.survey.androiddemo.MainActivity.java
com.survey.androiddemo.SDKConfigSettings.java