diff --git a/myTracks/build.gradle b/myTracks/build.gradle index b0bc4aa9a..fc8311b66 100644 --- a/myTracks/build.gradle +++ b/myTracks/build.gradle @@ -5,7 +5,7 @@ android { defaultConfig { applicationId "com.google.android.maps.mytracks" - minSdkVersion 9 + minSdkVersion 14 targetSdkVersion 26 testApplicationId "com.google.android.maps.mytracks.test" @@ -49,4 +49,6 @@ dependencies { compile files('libs/libGoogleAnalytics.jar') androidTestCompile files('libs/AndroidMockGenerator.jar') androidTestCompile files('libs/robotium-solo-5.0.1.jar') + + implementation 'com.google.android.gms:play-services-location:11.8.0' } diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/AbstractSendToGoogleActivity.java b/myTracks/src/main/java/com/google/android/apps/mytracks/AbstractSendToGoogleActivity.java index b890e2e37..af5e5fdce 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/AbstractSendToGoogleActivity.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/AbstractSendToGoogleActivity.java @@ -18,38 +18,24 @@ package com.google.android.apps.mytracks; import com.google.android.apps.mytracks.fragments.ConfirmDeleteDialogFragment; import com.google.android.apps.mytracks.fragments.ConfirmDeleteDialogFragment.ConfirmDeleteCaller; -import com.google.android.apps.mytracks.fragments.ExportDialogFragment.ExportType; import com.google.android.apps.mytracks.fragments.InstallEarthDialogFragment; import com.google.android.apps.mytracks.fragments.ShareTrackDialogFragment; import com.google.android.apps.mytracks.fragments.ShareTrackDialogFragment.ShareTrackCaller; import com.google.android.apps.mytracks.io.file.TrackFileFormat; import com.google.android.apps.mytracks.io.file.exporter.SaveActivity; -import com.google.android.apps.mytracks.io.sync.SyncUtils; import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection; import com.google.android.apps.mytracks.services.tasks.CheckPermissionAsyncTask; -import com.google.android.apps.mytracks.services.tasks.CheckPermissionAsyncTask.CheckPermissionCaller; -import com.google.android.apps.mytracks.util.AnalyticsUtils; import com.google.android.apps.mytracks.util.GoogleEarthUtils; import com.google.android.apps.mytracks.util.IntentUtils; import com.google.android.apps.mytracks.util.PreferencesUtils; import com.google.android.apps.mytracks.util.TrackRecordingServiceConnectionUtils; import com.google.android.maps.mytracks.R; -import android.accounts.Account; -import android.accounts.AccountManager; -import android.accounts.AccountManagerCallback; -import android.accounts.AccountManagerFuture; -import android.accounts.AuthenticatorException; -import android.accounts.OperationCanceledException; -import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Parcelable; -import android.util.Log; import android.widget.Toast; -import java.io.IOException; - /** * An abstract class for the following common tasks across * {@link TrackListActivity}, {@link TrackDetailActivity}, and @@ -115,7 +101,6 @@ public abstract class AbstractSendToGoogleActivity extends AbstractMyTracksActiv * @param trackId the track id */ protected void shareTrack(long trackId) { - AnalyticsUtils.sendPageViews(this, AnalyticsUtils.ACTION_SHARE_DRIVE); ShareTrackDialogFragment.newInstance(trackId) .show(getSupportFragmentManager(), ShareTrackDialogFragment.SHARE_TRACK_DIALOG_TAG); } @@ -177,7 +162,6 @@ public abstract class AbstractSendToGoogleActivity extends AbstractMyTracksActiv * @param trackIds the track ids */ protected void playTracks(long[] trackIds) { - AnalyticsUtils.sendPageViews(this, AnalyticsUtils.ACTION_PLAY); if (GoogleEarthUtils.isEarthInstalled(this)) { Intent intent = IntentUtils.newIntent(this, SaveActivity.class) .putExtra(SaveActivity.EXTRA_TRACK_IDS, trackIds) diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/TrackDetailActivity.java b/myTracks/src/main/java/com/google/android/apps/mytracks/TrackDetailActivity.java index e3f4c4dab..083e72aff 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/TrackDetailActivity.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/TrackDetailActivity.java @@ -38,7 +38,6 @@ import com.google.android.apps.mytracks.io.file.TrackFileFormat; import com.google.android.apps.mytracks.io.file.exporter.SaveActivity; import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection; import com.google.android.apps.mytracks.settings.SettingsActivity; -import com.google.android.apps.mytracks.util.AnalyticsUtils; import com.google.android.apps.mytracks.util.ApiAdapterFactory; import com.google.android.apps.mytracks.util.CalorieUtils; import com.google.android.apps.mytracks.util.CalorieUtils.ActivityType; @@ -191,13 +190,11 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity public void onClick(View v) { if (recordingTrackPaused) { // Paused -> Resume - AnalyticsUtils.sendPageViews(TrackDetailActivity.this, AnalyticsUtils.ACTION_RESUME_TRACK); updateMenuItems(true, false); TrackRecordingServiceConnectionUtils.resumeTrack(trackRecordingServiceConnection); trackController.update(true, false); } else { // Recording -> Paused - AnalyticsUtils.sendPageViews(TrackDetailActivity.this, AnalyticsUtils.ACTION_PAUSE_TRACK); updateMenuItems(true, true); TrackRecordingServiceConnectionUtils.pauseTrack(trackRecordingServiceConnection); trackController.update(true, true); @@ -208,7 +205,6 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity private final OnClickListener stopListener = new OnClickListener() { @Override public void onClick(View v) { - AnalyticsUtils.sendPageViews(TrackDetailActivity.this, AnalyticsUtils.ACTION_STOP_RECORDING); updateMenuItems(false, true); TrackRecordingServiceConnectionUtils.stopRecording( TrackDetailActivity.this, trackRecordingServiceConnection, true); @@ -275,7 +271,6 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity TrackRecordingServiceConnectionUtils.startConnection(this, trackRecordingServiceConnection); trackDataHub.start(); - AnalyticsUtils.sendPageViews(this, AnalyticsUtils.PAGE_TRACK_DETAIL); } @Override @@ -301,7 +296,6 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); trackRecordingServiceConnection.unbind(); trackDataHub.stop(); - AnalyticsUtils.dispatch(); } @Override @@ -393,7 +387,6 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity Intent intent; switch (item.getItemId()) { case R.id.track_detail_insert_marker: - AnalyticsUtils.sendPageViews(this, AnalyticsUtils.ACTION_INSERT_MARKER); intent = IntentUtils.newIntent(this, MarkerEditActivity.class) .putExtra(MarkerEditActivity.EXTRA_TRACK_ID, trackId); startActivity(intent); @@ -487,8 +480,6 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity public void onExportDone( ExportType exportType, TrackFileFormat trackFileFormat, Account account) { if (exportType == ExportType.EXTERNAL_STORAGE) { - AnalyticsUtils.sendPageViews( - this, AnalyticsUtils.ACTION_EXPORT_PREFIX + trackFileFormat.getExtension()); Intent intent = IntentUtils.newIntent(this, SaveActivity.class) .putExtra(SaveActivity.EXTRA_TRACK_IDS, new long[] { trackId }) .putExtra(SaveActivity.EXTRA_TRACK_FILE_FORMAT, (Parcelable) trackFileFormat); diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/TrackListActivity.java b/myTracks/src/main/java/com/google/android/apps/mytracks/TrackListActivity.java index 66aa404f7..b71e658ca 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/TrackListActivity.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/TrackListActivity.java @@ -37,7 +37,6 @@ import com.google.android.apps.mytracks.services.ITrackRecordingService; import com.google.android.apps.mytracks.services.MyTracksLocationManager; import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection; import com.google.android.apps.mytracks.settings.SettingsActivity; -import com.google.android.apps.mytracks.util.AnalyticsUtils; import com.google.android.apps.mytracks.util.ApiAdapterFactory; import com.google.android.apps.mytracks.util.EulaUtils; import com.google.android.apps.mytracks.util.GoogleLocationUtils; @@ -242,19 +241,16 @@ public class TrackListActivity extends AbstractSendToGoogleActivity public void onClick(View v) { if (recordingTrackId == PreferencesUtils.RECORDING_TRACK_ID_DEFAULT) { // Not recording -> Recording - AnalyticsUtils.sendPageViews(TrackListActivity.this, AnalyticsUtils.ACTION_RECORD_TRACK); updateMenuItems(false, true); startRecording(); } else { if (recordingTrackPaused) { // Paused -> Resume - AnalyticsUtils.sendPageViews(TrackListActivity.this, AnalyticsUtils.ACTION_RESUME_TRACK); updateMenuItems(false, true); TrackRecordingServiceConnectionUtils.resumeTrack(trackRecordingServiceConnection); trackController.update(true, false); } else { // Recording -> Paused - AnalyticsUtils.sendPageViews(TrackListActivity.this, AnalyticsUtils.ACTION_PAUSE_TRACK); updateMenuItems(false, true); TrackRecordingServiceConnectionUtils.pauseTrack(trackRecordingServiceConnection); trackController.update(true, true); @@ -266,7 +262,6 @@ public class TrackListActivity extends AbstractSendToGoogleActivity private final OnClickListener stopListener = new OnClickListener() { @Override public void onClick(View v) { - AnalyticsUtils.sendPageViews(TrackListActivity.this, AnalyticsUtils.ACTION_STOP_RECORDING); updateMenuItems(false, false); TrackRecordingServiceConnectionUtils.stopRecording( TrackListActivity.this, trackRecordingServiceConnection, true); @@ -407,8 +402,6 @@ public class TrackListActivity extends AbstractSendToGoogleActivity // Update track recording service connection TrackRecordingServiceConnectionUtils.startConnection(this, trackRecordingServiceConnection); - - AnalyticsUtils.sendPageViews(this, AnalyticsUtils.PAGE_TRACK_LIST); } @Override @@ -438,8 +431,6 @@ public class TrackListActivity extends AbstractSendToGoogleActivity sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener); trackRecordingServiceConnection.unbind(); - - AnalyticsUtils.dispatch(); } @Override @@ -628,16 +619,12 @@ public class TrackListActivity extends AbstractSendToGoogleActivity Intent intent; switch (menuId) { case R.id.track_list_export_all: - AnalyticsUtils.sendPageViews( - this, AnalyticsUtils.ACTION_EXPORT_ALL_PREFIX + trackFileFormat.getExtension()); intent = IntentUtils.newIntent(this, SaveActivity.class) .putExtra(SaveActivity.EXTRA_TRACK_IDS, new long[] {-1L}) .putExtra(SaveActivity.EXTRA_TRACK_FILE_FORMAT, (Parcelable) trackFileFormat); startActivity(intent); break; case R.id.track_list_import_all: - AnalyticsUtils.sendPageViews( - this, AnalyticsUtils.ACTION_IMPORT_ALL_PREFIX + trackFileFormat.getExtension()); intent = IntentUtils.newIntent(this, ImportActivity.class) .putExtra(ImportActivity.EXTRA_IMPORT_ALL, true) .putExtra(ImportActivity.EXTRA_TRACK_FILE_FORMAT, (Parcelable) trackFileFormat); diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/services/sensors/SensorManagerFactory.java b/myTracks/src/main/java/com/google/android/apps/mytracks/services/sensors/SensorManagerFactory.java index ecedd7465..d8c17e946 100644 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/services/sensors/SensorManagerFactory.java +++ b/myTracks/src/main/java/com/google/android/apps/mytracks/services/sensors/SensorManagerFactory.java @@ -17,7 +17,6 @@ package com.google.android.apps.mytracks.services.sensors; import com.google.android.apps.mytracks.services.sensors.ant.AntSensorManager; -import com.google.android.apps.mytracks.util.AnalyticsUtils; import com.google.android.apps.mytracks.util.PreferencesUtils; import com.google.android.maps.mytracks.R; @@ -43,7 +42,7 @@ public class SensorManagerFactory { public static SensorManager getSystemSensorManager(Context context) { releaseTempSensorManager(); releaseSystemSensorManager(); - systemSensorManager = getSensorManager(context, true); + systemSensorManager = getSensorManager(context); if (systemSensorManager != null) { systemSensorManager.startSensor(); } @@ -70,7 +69,7 @@ public class SensorManagerFactory { if (systemSensorManager != null) { return null; } - tempSensorManager = getSensorManager(context, false); + tempSensorManager = getSensorManager(context); if (tempSensorManager != null) { tempSensorManager.startSensor(); } @@ -92,26 +91,15 @@ public class SensorManagerFactory { * * @param context the context */ - private static SensorManager getSensorManager(Context context, boolean sendPageViews) { + private static SensorManager getSensorManager(Context context) { String sensorType = PreferencesUtils.getString( context, R.string.sensor_type_key, PreferencesUtils.SENSOR_TYPE_DEFAULT); - if (sensorType.equals(context.getString(R.string.sensor_type_value_ant))) { - if (sendPageViews) { - AnalyticsUtils.sendPageViews(context, AnalyticsUtils.SENSOR_ANT); - } - return new AntSensorManager(context); - } else if (sensorType.equals(context.getString(R.string.sensor_type_value_zephyr))) { - if (sendPageViews) { - AnalyticsUtils.sendPageViews(context, AnalyticsUtils.SENSOR_ZEPHYR); - } - return new ZephyrSensorManager(context); - } else if (sensorType.equals(context.getString(R.string.sensor_type_value_polar))) { - if (sendPageViews) { - AnalyticsUtils.sendPageViews(context, AnalyticsUtils.SENSOR_POLAR); - } - return new PolarSensorManager(context); + switch (sensorType) { + case "ANT": return new AntSensorManager(context); + case "ZEPHYR": return new ZephyrSensorManager(context); + case "POLAR": return new PolarSensorManager(context); } return null; - } + } } diff --git a/myTracks/src/main/java/com/google/android/apps/mytracks/util/AnalyticsUtils.java b/myTracks/src/main/java/com/google/android/apps/mytracks/util/AnalyticsUtils.java deleted file mode 100644 index 1bd01cec7..000000000 --- a/myTracks/src/main/java/com/google/android/apps/mytracks/util/AnalyticsUtils.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2012 Google Inc. - * - * 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.google.android.apps.mytracks.util; - -import com.google.android.apps.analytics.GoogleAnalyticsTracker; - -import android.content.Context; - -/** - * Utitlites for sending pageviews to Google Analytics. - * - * @author Jimmy Shih - */ -public class AnalyticsUtils { - - public static final String ACTION_EXPORT_ALL_PREFIX = "/action/export_all_"; - public static final String ACTION_EXPORT_PREFIX = "/action/export_"; - public static final String ACTION_EXPORT_DRIVE = "/action/export_drive"; - public static final String ACTION_EXPORT_FUSION_TABLES = "/action/export_fusion_tables"; - public static final String ACTION_EXPORT_MAPS = "/action/export_maps"; - public static final String ACTION_EXPORT_SPREADSHEETS = "/action/export_spreadsheets"; - public static final String ACTION_IMPORT_ALL_PREFIX = "/action/import_all_"; - public static final String ACTION_INSERT_MARKER = "/action/insert_marker"; - public static final String ACTION_PAUSE_TRACK = "/action/pause_track"; - public static final String ACTION_PLAY = "/action/play"; - public static final String ACTION_RECORD_TRACK = "/action/record_track"; - public static final String ACTION_RESUME_TRACK = "/action/resume_track"; - public static final String ACTION_SHARE_DRIVE = "/action/share_drive"; - public static final String ACTION_STOP_RECORDING = "/action/stop_recording"; - - public static final String PAGE_TRACK_DETAIL = "/page/track_detail"; - public static final String PAGE_TRACK_LIST = "/page/track_list"; - - public static final String SENSOR_ANT = "/sensor/ant"; - public static final String SENSOR_POLAR = "/sensor/polar"; - public static final String SENSOR_ZEPHYR = "/sensor/zephyr"; - - private static final String UA = "UA-7222692-2"; - private static final String PRODUCT_NAME = "android-mytracks"; - private static GoogleAnalyticsTracker tracker; - - private AnalyticsUtils() {} - - /** - * Sends a page view. - * - * @param context the context - * @param page the page - */ - public static void sendPageViews(Context context, String page) { - if (tracker == null) { - tracker = GoogleAnalyticsTracker.getInstance(); - tracker.startNewSession(UA, context); - tracker.setProductVersion(PRODUCT_NAME, SystemUtils.getMyTracksVersion(context)); - } - tracker.trackPageView(page); - } - - public static void dispatch() { - if (tracker != null) { - tracker.dispatch(); - } - } -} \ No newline at end of file diff --git a/myTracksLib/build.gradle b/myTracksLib/build.gradle index e9c8d1942..75d4921e9 100644 --- a/myTracksLib/build.gradle +++ b/myTracksLib/build.gradle @@ -4,7 +4,7 @@ android { compileSdkVersion 26 defaultConfig { - minSdkVersion 9 + minSdkVersion 14 targetSdkVersion 26 }