merge heads

This commit is contained in:
Jimmy Shih
2012-06-05 17:40:49 -07:00
8 changed files with 43 additions and 23 deletions
Binary file not shown.
-1
View File
@@ -18,7 +18,6 @@ limitations under the License.
<!-- DO NOT TRANSLATE ANY STRINGS IN THIS FILE. --> <!-- DO NOT TRANSLATE ANY STRINGS IN THIS FILE. -->
<string name="marker_statistics_icon_url">http://maps.google.com/mapfiles/ms/micons/ylw-pushpin.png</string> <string name="marker_statistics_icon_url">http://maps.google.com/mapfiles/ms/micons/ylw-pushpin.png</string>
<string name="marker_waypoint_icon_url">http://maps.google.com/mapfiles/ms/micons/blue-pushpin.png</string> <string name="marker_waypoint_icon_url">http://maps.google.com/mapfiles/ms/micons/blue-pushpin.png</string>
<string name="my_tracks_analytics_id">UA-7222692-2</string>
<string name="my_tracks_privacy_url">www.google.com/policies/privacy/</string> <string name="my_tracks_privacy_url">www.google.com/policies/privacy/</string>
<string name="my_tracks_recording_service_name">My Tracks Recording Service</string> <string name="my_tracks_recording_service_name">My Tracks Recording Service</string>
<string name="my_tracks_support_url">groups.google.com/a/googleproductforums.com/forum/#!categories/maps/mytracks</string> <string name="my_tracks_support_url">groups.google.com/a/googleproductforums.com/forum/#!categories/maps/mytracks</string>
@@ -35,10 +35,11 @@ public class MyTracksApplication extends Application {
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate();
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
ApiAdapterFactory.getApiAdapter().enableStrictMode(); ApiAdapterFactory.getApiAdapter().enableStrictMode();
} }
AnalyticsUtils.sendPageViews(this, "/appstart"); AnalyticsUtils.sendPageViews(getApplicationContext(), "/appstart");
Intent intent = new Intent(this, RemoveTempFilesService.class); Intent intent = new Intent(this, RemoveTempFilesService.class);
startService(intent); startService(intent);
} }
@@ -91,7 +91,7 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
private MenuItem saveMenuItem; private MenuItem saveMenuItem;
private View mapViewContainer; private View mapViewContainer;
/* /*
* Note that sharedPreferenceChangeListener cannot be an anonymous inner * Note that sharedPreferenceChangeListener cannot be an anonymous inner
* class. Anonymous inner class will get garbage collected. * class. Anonymous inner class will get garbage collected.
@@ -252,6 +252,7 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
TrackRecordingServiceConnectionUtils.stop(this, trackRecordingServiceConnection, true); TrackRecordingServiceConnectionUtils.stop(this, trackRecordingServiceConnection, true);
return true; return true;
case R.id.track_detail_insert_marker: case R.id.track_detail_insert_marker:
AnalyticsUtils.sendPageViews(this, "/action/insert_marker");
intent = IntentUtils.newIntent(this, MarkerEditActivity.class) intent = IntentUtils.newIntent(this, MarkerEditActivity.class)
.putExtra(MarkerEditActivity.EXTRA_TRACK_ID, trackId); .putExtra(MarkerEditActivity.EXTRA_TRACK_ID, trackId);
startActivity(intent); startActivity(intent);
@@ -270,6 +271,7 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
} }
return true; return true;
case R.id.track_detail_share: case R.id.track_detail_share:
AnalyticsUtils.sendPageViews(this, "/action/share");
ChooseActivityDialogFragment.newInstance(trackId, null).show( ChooseActivityDialogFragment.newInstance(trackId, null).show(
getSupportFragmentManager(), ChooseActivityDialogFragment.CHOOSE_ACTIVITY_DIALOG_TAG); getSupportFragmentManager(), ChooseActivityDialogFragment.CHOOSE_ACTIVITY_DIALOG_TAG);
return true; return true;
@@ -290,6 +292,7 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
.show(getSupportFragmentManager(), FrequencyDialogFragment.FREQUENCY_DIALOG_TAG); .show(getSupportFragmentManager(), FrequencyDialogFragment.FREQUENCY_DIALOG_TAG);
return true; return true;
case R.id.track_detail_send_google: case R.id.track_detail_send_google:
AnalyticsUtils.sendPageViews(this, "/action/send_google");
ChooseUploadServiceDialogFragment.newInstance(new SendRequest(trackId)).show( ChooseUploadServiceDialogFragment.newInstance(new SendRequest(trackId)).show(
getSupportFragmentManager(), getSupportFragmentManager(),
ChooseUploadServiceDialogFragment.CHOOSE_UPLOAD_SERVICE_DIALOG_TAG); ChooseUploadServiceDialogFragment.CHOOSE_UPLOAD_SERVICE_DIALOG_TAG);
@@ -457,6 +460,7 @@ public class TrackDetailActivity extends AbstractMyTracksActivity implements Del
* @param trackFileFormat the track file format * @param trackFileFormat the track file format
*/ */
private void startSaveActivity(TrackFileFormat trackFileFormat) { private void startSaveActivity(TrackFileFormat trackFileFormat) {
AnalyticsUtils.sendPageViews(this, "/action/save");
Intent intent = IntentUtils.newIntent(this, SaveActivity.class) Intent intent = IntentUtils.newIntent(this, SaveActivity.class)
.putExtra(SaveActivity.EXTRA_TRACK_ID, trackId) .putExtra(SaveActivity.EXTRA_TRACK_ID, trackId)
.putExtra(SaveActivity.EXTRA_TRACK_FILE_FORMAT, (Parcelable) trackFileFormat); .putExtra(SaveActivity.EXTRA_TRACK_FILE_FORMAT, (Parcelable) trackFileFormat);
@@ -28,6 +28,7 @@ import com.google.android.apps.mytracks.io.file.TrackWriterFactory.TrackFileForm
import com.google.android.apps.mytracks.services.ITrackRecordingService; import com.google.android.apps.mytracks.services.ITrackRecordingService;
import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection; import com.google.android.apps.mytracks.services.TrackRecordingServiceConnection;
import com.google.android.apps.mytracks.settings.SettingsActivity; 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.ApiAdapterFactory;
import com.google.android.apps.mytracks.util.EulaUtils; import com.google.android.apps.mytracks.util.EulaUtils;
import com.google.android.apps.mytracks.util.IntentUtils; import com.google.android.apps.mytracks.util.IntentUtils;
@@ -384,6 +385,7 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac
Intent intent; Intent intent;
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.track_list_record_track: case R.id.track_list_record_track:
AnalyticsUtils.sendPageViews(this, "/action/record_track");
updateMenuItems(true); updateMenuItems(true);
startRecording(); startRecording();
return true; return true;
@@ -394,6 +396,7 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac
case R.id.track_list_search: case R.id.track_list_search:
return ApiAdapterFactory.getApiAdapter().handleSearchMenuSelection(this); return ApiAdapterFactory.getApiAdapter().handleSearchMenuSelection(this);
case R.id.track_list_import: case R.id.track_list_import:
AnalyticsUtils.sendPageViews(this, "/action/import");
intent = IntentUtils.newIntent(this, ImportActivity.class) intent = IntentUtils.newIntent(this, ImportActivity.class)
.putExtra(ImportActivity.EXTRA_IMPORT_ALL, true); .putExtra(ImportActivity.EXTRA_IMPORT_ALL, true);
startActivity(intent); startActivity(intent);
@@ -437,6 +440,7 @@ public class TrackListActivity extends FragmentActivity implements DeleteOneTrac
* @param trackFileFormat the track file format * @param trackFileFormat the track file format
*/ */
private void startSaveActivity(TrackFileFormat trackFileFormat) { private void startSaveActivity(TrackFileFormat trackFileFormat) {
AnalyticsUtils.sendPageViews(this, "/action/save_all");
Intent intent = IntentUtils.newIntent(this, SaveActivity.class) Intent intent = IntentUtils.newIntent(this, SaveActivity.class)
.putExtra(SaveActivity.EXTRA_TRACK_FILE_FORMAT, (Parcelable) trackFileFormat); .putExtra(SaveActivity.EXTRA_TRACK_FILE_FORMAT, (Parcelable) trackFileFormat);
startActivity(intent); startActivity(intent);
@@ -36,8 +36,6 @@ import android.widget.RadioButton;
import android.widget.TableRow; import android.widget.TableRow;
import android.widget.Toast; import android.widget.Toast;
import java.util.ArrayList;
/** /**
* A DialogFragment to choose upload service. * A DialogFragment to choose upload service.
* *
@@ -143,11 +141,11 @@ public class ChooseUploadServiceDialogFragment extends DialogFragment {
* Starts the next activity, {@link AccountChooserActivity}. * Starts the next activity, {@link AccountChooserActivity}.
*/ */
private void startNextActivity() { private void startNextActivity() {
sendStats();
sendRequest.setSendMaps(mapsCheckBox.isChecked()); sendRequest.setSendMaps(mapsCheckBox.isChecked());
sendRequest.setSendFusionTables(fusionTablesCheckBox.isChecked()); sendRequest.setSendFusionTables(fusionTablesCheckBox.isChecked());
sendRequest.setSendDocs(docsCheckBox.isChecked()); sendRequest.setSendDocs(docsCheckBox.isChecked());
sendRequest.setNewMap(!existingMapRadioButton.isChecked()); sendRequest.setNewMap(!existingMapRadioButton.isChecked());
sendStats();
Intent intent = IntentUtils.newIntent(getActivity(), AccountChooserActivity.class) Intent intent = IntentUtils.newIntent(getActivity(), AccountChooserActivity.class)
.putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest); .putExtra(SendRequest.SEND_REQUEST_KEY, sendRequest);
startActivity(intent); startActivity(intent);
@@ -157,16 +155,14 @@ public class ChooseUploadServiceDialogFragment extends DialogFragment {
* Sends stats to Google Analytics. * Sends stats to Google Analytics.
*/ */
private void sendStats() { private void sendStats() {
ArrayList<String> pages = new ArrayList<String>();
if (sendRequest.isSendMaps()) { if (sendRequest.isSendMaps()) {
pages.add("/send/maps"); AnalyticsUtils.sendPageViews(getActivity(), "/send/maps");
} }
if (sendRequest.isSendFusionTables()) { if (sendRequest.isSendFusionTables()) {
pages.add("/send/fusion_tables"); AnalyticsUtils.sendPageViews(getActivity(), "/send/fusion_tables");
} }
if (sendRequest.isSendDocs()) { if (sendRequest.isSendDocs()) {
pages.add("/send/docs"); AnalyticsUtils.sendPageViews(getActivity(), "/send/docs");
} }
AnalyticsUtils.sendPageViews(getActivity(), pages.toArray(new String[pages.size()]));
} }
} }
@@ -17,6 +17,7 @@
package com.google.android.apps.mytracks.services.sensors; package com.google.android.apps.mytracks.services.sensors;
import com.google.android.apps.mytracks.services.sensors.ant.AntSensorManager; 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.apps.mytracks.util.PreferencesUtils;
import com.google.android.maps.mytracks.R; import com.google.android.maps.mytracks.R;
@@ -42,7 +43,7 @@ public class SensorManagerFactory {
public static SensorManager getSystemSensorManager(Context context) { public static SensorManager getSystemSensorManager(Context context) {
releaseTempSensorManager(); releaseTempSensorManager();
releaseSystemSensorManager(); releaseSystemSensorManager();
systemSensorManager = getSensorManager(context); systemSensorManager = getSensorManager(context, true);
if (systemSensorManager != null) { if (systemSensorManager != null) {
systemSensorManager.startSensor(); systemSensorManager.startSensor();
} }
@@ -69,7 +70,7 @@ public class SensorManagerFactory {
if (systemSensorManager != null) { if (systemSensorManager != null) {
return null; return null;
} }
tempSensorManager = getSensorManager(context); tempSensorManager = getSensorManager(context, false);
if (tempSensorManager != null) { if (tempSensorManager != null) {
tempSensorManager.startSensor(); tempSensorManager.startSensor();
} }
@@ -91,16 +92,25 @@ public class SensorManagerFactory {
* *
* @param context the context * @param context the context
*/ */
private static SensorManager getSensorManager(Context context) { private static SensorManager getSensorManager(Context context, boolean sendPageViews) {
String sensorTypeValueNone = context.getString(R.string.sensor_type_value_none); String sensorTypeValueNone = context.getString(R.string.sensor_type_value_none);
String sensorType = PreferencesUtils.getString( String sensorType = PreferencesUtils.getString(
context, R.string.sensor_type_key, sensorTypeValueNone); context, R.string.sensor_type_key, sensorTypeValueNone);
if (sensorType.equals(context.getString(R.string.sensor_type_value_ant))) { if (sensorType.equals(context.getString(R.string.sensor_type_value_ant))) {
if (sendPageViews) {
AnalyticsUtils.sendPageViews(context, "/sensor/ant");
}
return new AntSensorManager(context); return new AntSensorManager(context);
} else if (sensorType.equals(context.getString(R.string.sensor_type_value_zephyr))) { } else if (sensorType.equals(context.getString(R.string.sensor_type_value_zephyr))) {
if (sendPageViews) {
AnalyticsUtils.sendPageViews(context, "/sensor/zephyr");
}
return new ZephyrSensorManager(context); return new ZephyrSensorManager(context);
} else if (sensorType.equals(context.getString(R.string.sensor_type_value_polar))) { } else if (sensorType.equals(context.getString(R.string.sensor_type_value_polar))) {
if (sendPageViews) {
AnalyticsUtils.sendPageViews(context, "/sensor/polar");
}
return new PolarSensorManager(context); return new PolarSensorManager(context);
} }
return null; return null;
@@ -17,7 +17,6 @@
package com.google.android.apps.mytracks.util; package com.google.android.apps.mytracks.util;
import com.google.android.apps.analytics.GoogleAnalyticsTracker; import com.google.android.apps.analytics.GoogleAnalyticsTracker;
import com.google.android.maps.mytracks.R;
import android.content.Context; import android.content.Context;
@@ -28,16 +27,23 @@ import android.content.Context;
*/ */
public class AnalyticsUtils { public class AnalyticsUtils {
private static final String UA = "UA-7222692-2";
private static final String PRODUCT_NAME = "android-mytracks";
private AnalyticsUtils() {} private AnalyticsUtils() {}
public static void sendPageViews(Context context, String ... pages) { /**
* Sends a page view.
*
* @param context the context
* @param page the page
*/
public static void sendPageViews(Context context, String page) {
GoogleAnalyticsTracker tracker = GoogleAnalyticsTracker.getInstance(); GoogleAnalyticsTracker tracker = GoogleAnalyticsTracker.getInstance();
tracker.start(context.getString(R.string.my_tracks_analytics_id), context); tracker.startNewSession(UA, context);
tracker.setProductVersion("android-mytracks", SystemUtils.getMyTracksVersion(context)); tracker.setProductVersion(PRODUCT_NAME, SystemUtils.getMyTracksVersion(context));
for (String page : pages) { tracker.trackPageView(page);
tracker.trackPageView(page);
}
tracker.dispatch(); tracker.dispatch();
tracker.stop(); tracker.stopSession();
} }
} }