Android Open Source - HockeySDK-Android Tracking






From Project

Back to project page HockeySDK-Android.

License

The source code is released under:

Apache License

If you think the Android project HockeySDK-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 net.hockeyapp.android;
// www.ja v  a  2 s.com
import net.hockeyapp.android.utils.PrefsUtil;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;

/**
 * <h3>Description</h3>
 * 
 * This class defines methods to track the app's usage time.  
 * 
 * <h3>License</h3>
 * 
 * <pre>
 * Copyright (c) 2011-2014 Bit Stadium GmbH
 * 
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use,
 * copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following
 * conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 * OTHER DEALINGS IN THE SOFTWARE.
 * </pre>
 *
 * @author Thomas Dohmke
 **/
public class Tracking {
  /**
   * Key for shared preferences to store a start time.
   */
  private static final String START_TIME_KEY = "startTime";

  /**
   * Key for shared preferences to store a usage time.
   */
  private static final String USAGE_TIME_KEY = "usageTime";
  
  /**
   * Starts tracking of the usage time for the given activity. The current
   * time is saved in shared preferences with a unique key.
   * 
   * @param activity Instance of activity
   */
  public static void startUsage(Activity activity) {
    long now = System.currentTimeMillis();

    if (activity == null) {
      return;
    }
    
    SharedPreferences.Editor editor = getPreferences(activity).edit();
    editor.putLong(START_TIME_KEY + activity.hashCode(), now);
    PrefsUtil.applyChanges(editor);
  }

  /**
   * Stops tracking of the usage time for the given activity. Reads the
   * start time which was stored by startUsage and calculates the 
   * difference. This difference is then added to the total usage time
   * for the current version.   
   * 
   * @param activity Instance of activity
   */
  public static void stopUsage(Activity activity) {
    long now = System.currentTimeMillis();
    
    if (activity == null) {
      return;
    }

    if (!checkVersion(activity)) {
      return;
    }

    SharedPreferences preferences = getPreferences(activity);
    long start = preferences.getLong(START_TIME_KEY + activity.hashCode(), 0);
    long sum = preferences.getLong(USAGE_TIME_KEY + Constants.APP_VERSION, 0);
    
    if (start > 0) {
      long duration = now - start;
      
      SharedPreferences.Editor editor = preferences.edit();
      editor.putLong(USAGE_TIME_KEY + Constants.APP_VERSION, sum + duration);
      PrefsUtil.applyChanges(editor);
    }
  }

  /**
   * Returns the usage time of the current version in seconds.
   * 
   * @param context Context to access shared preference.
   * @return Usage time in seconds.
   */
  public static long getUsageTime(Context context) {
    if (!checkVersion(context)) {
      return 0;
    }

    SharedPreferences preferences = getPreferences(context);
    long sum = preferences.getLong(USAGE_TIME_KEY + Constants.APP_VERSION, 0);
    return sum / 1000;
  }
  
  /**
   * Checks if the versionCode was set. If not, try to load it. Returns false
   * if it is still null.
   */
  private static boolean checkVersion(Context context) {
    if (Constants.APP_VERSION == null) {
      Constants.loadFromContext(context);

      if (Constants.APP_VERSION == null) {
        return false;
      }
    }
    
    return true;
  }

  /**
   * Helper method to return an instance of SharedPreferences. 
   */
  private static SharedPreferences getPreferences(Context context) {
    return context.getSharedPreferences("HockeyApp", Context.MODE_PRIVATE);
  }
}




Java Source Code List

net.hockeyapp.android.Constants.java
net.hockeyapp.android.CrashManagerListener.java
net.hockeyapp.android.CrashManager.java
net.hockeyapp.android.ExceptionHandler.java
net.hockeyapp.android.ExpiryInfoActivity.java
net.hockeyapp.android.FeedbackActivityInterface.java
net.hockeyapp.android.FeedbackActivity.java
net.hockeyapp.android.FeedbackManagerListener.java
net.hockeyapp.android.FeedbackManager.java
net.hockeyapp.android.LocaleManager.java
net.hockeyapp.android.LoginActivity.java
net.hockeyapp.android.LoginManagerListener.java
net.hockeyapp.android.LoginManager.java
net.hockeyapp.android.PaintActivity.java
net.hockeyapp.android.StringListener.java
net.hockeyapp.android.Strings.java
net.hockeyapp.android.Tracking.java
net.hockeyapp.android.UpdateActivityInterface.java
net.hockeyapp.android.UpdateActivity.java
net.hockeyapp.android.UpdateFragment.java
net.hockeyapp.android.UpdateInfoListener.java
net.hockeyapp.android.UpdateManagerListener.java
net.hockeyapp.android.UpdateManager.java
net.hockeyapp.android.adapters.MessagesAdapter.java
net.hockeyapp.android.listeners.DownloadFileListener.java
net.hockeyapp.android.listeners.SendFeedbackListener.java
net.hockeyapp.android.objects.ErrorObject.java
net.hockeyapp.android.objects.FeedbackAttachment.java
net.hockeyapp.android.objects.FeedbackMessage.java
net.hockeyapp.android.objects.FeedbackResponse.java
net.hockeyapp.android.objects.Feedback.java
net.hockeyapp.android.tasks.AttachmentDownloader.java
net.hockeyapp.android.tasks.CheckUpdateTaskWithUI.java
net.hockeyapp.android.tasks.CheckUpdateTask.java
net.hockeyapp.android.tasks.DownloadFileTask.java
net.hockeyapp.android.tasks.GetFileSizeTask.java
net.hockeyapp.android.tasks.LoginTask.java
net.hockeyapp.android.tasks.ParseFeedbackTask.java
net.hockeyapp.android.tasks.SendFeedbackTask.java
net.hockeyapp.android.utils.AsyncTaskUtils.java
net.hockeyapp.android.utils.Base64.java
net.hockeyapp.android.utils.ConnectionManager.java
net.hockeyapp.android.utils.DeviceUtils.java
net.hockeyapp.android.utils.FeedbackParser.java
net.hockeyapp.android.utils.ImageUtils.java
net.hockeyapp.android.utils.PrefsUtil.java
net.hockeyapp.android.utils.SimpleMultipartEntity.java
net.hockeyapp.android.utils.UiThreadUtil.java
net.hockeyapp.android.utils.Util.java
net.hockeyapp.android.utils.VersionCache.java
net.hockeyapp.android.utils.VersionHelper.java
net.hockeyapp.android.utils.ViewHelper.java
net.hockeyapp.android.views.AttachmentListView.java
net.hockeyapp.android.views.AttachmentView.java
net.hockeyapp.android.views.ExpiryInfoView.java
net.hockeyapp.android.views.FeedbackMessageView.java
net.hockeyapp.android.views.FeedbackView.java
net.hockeyapp.android.views.LoginView.java
net.hockeyapp.android.views.PaintView.java
net.hockeyapp.android.views.UpdateView.java