From 3847e4e8e26ed6c6f18ee4a6b2984d33051d155e Mon Sep 17 00:00:00 2001 From: Bobby Georgescu Date: Wed, 14 Nov 2012 14:02:16 -0800 Subject: Add possibility for UX improvement measurements Bug: 4293199 Change-Id: I45f8a63c676c8d7700c422a0a18f799fb6d02d2e --- .../gallery3d/app/AbstractGalleryActivity.java | 2 + src/com/android/gallery3d/app/GalleryAppImpl.java | 2 + src/com/android/gallery3d/app/StateManager.java | 19 ++++++++- .../android/gallery3d/util/UsageStatistics.java | 45 ++++++++++++++++++++++ 4 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 src_pd/com/android/gallery3d/util/UsageStatistics.java diff --git a/src/com/android/gallery3d/app/AbstractGalleryActivity.java b/src/com/android/gallery3d/app/AbstractGalleryActivity.java index d96094245..bd7e654d5 100644 --- a/src/com/android/gallery3d/app/AbstractGalleryActivity.java +++ b/src/com/android/gallery3d/app/AbstractGalleryActivity.java @@ -45,6 +45,7 @@ import com.android.gallery3d.ui.GLRoot; import com.android.gallery3d.ui.GLRootView; import com.android.gallery3d.util.LightCycleHelper.PanoramaViewHelper; import com.android.gallery3d.util.ThreadPool; +import com.android.gallery3d.util.UsageStatistics; public class AbstractGalleryActivity extends Activity implements GalleryContext { @SuppressWarnings("unused") @@ -75,6 +76,7 @@ public class AbstractGalleryActivity extends Activity implements GalleryContext mPanoramaViewHelper = new PanoramaViewHelper(this); mPanoramaViewHelper.onCreate(); doBindBatchService(); + UsageStatistics.showOptInDialogIfNeeded(this); } @Override diff --git a/src/com/android/gallery3d/app/GalleryAppImpl.java b/src/com/android/gallery3d/app/GalleryAppImpl.java index 561589b24..5b4a872d8 100644 --- a/src/com/android/gallery3d/app/GalleryAppImpl.java +++ b/src/com/android/gallery3d/app/GalleryAppImpl.java @@ -31,6 +31,7 @@ import com.android.gallery3d.picasasource.PicasaSource; import com.android.gallery3d.util.GalleryUtils; import com.android.gallery3d.util.LightCycleHelper; import com.android.gallery3d.util.ThreadPool; +import com.android.gallery3d.util.UsageStatistics; import java.io.File; @@ -54,6 +55,7 @@ public class GalleryAppImpl extends Application implements GalleryApp { GalleryUtils.initialize(this); WidgetUtils.initialize(this); PicasaSource.initialize(this); + UsageStatistics.initialize(this); mStitchingProgressManager = LightCycleHelper.createStitchingManagerInstance(this); if (mStitchingProgressManager != null) { diff --git a/src/com/android/gallery3d/app/StateManager.java b/src/com/android/gallery3d/app/StateManager.java index d77279f78..b4b5d4b05 100644 --- a/src/com/android/gallery3d/app/StateManager.java +++ b/src/com/android/gallery3d/app/StateManager.java @@ -26,6 +26,7 @@ import android.view.MenuItem; import com.android.gallery3d.anim.StateTransitionAnimation; import com.android.gallery3d.common.Utils; +import com.android.gallery3d.util.UsageStatistics; import java.util.Stack; @@ -62,6 +63,9 @@ public class StateManager { StateTransitionAnimation.Transition.Incoming); if (mIsResumed) top.onPause(); } + UsageStatistics.onContentViewChanged( + UsageStatistics.COMPONENT_GALLERY, + klass.getSimpleName()); state.initialize(mActivity, data); mStack.push(new StateEntry(data, state)); @@ -91,7 +95,8 @@ public class StateManager { } else { mResult = state.mResult; } - + UsageStatistics.onContentViewChanged(UsageStatistics.COMPONENT_GALLERY, + klass.getSimpleName()); mStack.push(new StateEntry(data, state)); state.onCreate(data, null); if (mIsResumed) state.resume(); @@ -210,6 +215,10 @@ public class StateManager { state.onDestroy(); if (top != null && mIsResumed) top.resume(); + if (top != null) { + UsageStatistics.onContentViewChanged(UsageStatistics.COMPONENT_GALLERY, + top.getClass().getSimpleName()); + } } public void switchState(ActivityState oldState, @@ -241,6 +250,8 @@ public class StateManager { mStack.push(new StateEntry(data, state)); state.onCreate(data, null); if (mIsResumed) state.resume(); + UsageStatistics.onContentViewChanged(UsageStatistics.COMPONENT_GALLERY, + klass.getSimpleName()); } public void destroy() { @@ -255,6 +266,7 @@ public class StateManager { public void restoreFromState(Bundle inState) { Log.v(TAG, "restoreFromState"); Parcelable list[] = inState.getParcelableArray(KEY_MAIN); + ActivityState topState = null; for (Parcelable parcelable : list) { Bundle bundle = (Bundle) parcelable; Class klass = @@ -273,6 +285,11 @@ public class StateManager { activityState.initialize(mActivity, data); activityState.onCreate(data, state); mStack.push(new StateEntry(data, activityState)); + topState = activityState; + } + if (topState != null) { + UsageStatistics.onContentViewChanged(UsageStatistics.COMPONENT_GALLERY, + topState.getClass().getSimpleName()); } } diff --git a/src_pd/com/android/gallery3d/util/UsageStatistics.java b/src_pd/com/android/gallery3d/util/UsageStatistics.java new file mode 100644 index 000000000..cf27ac58f --- /dev/null +++ b/src_pd/com/android/gallery3d/util/UsageStatistics.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * 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.android.gallery3d.util; + +import android.app.Activity; +import android.content.Context; + +public class UsageStatistics { + public static final boolean ENABLED = false; + + public static final String COMPONENT_GALLERY = "Gallery"; + public static final String COMPONENT_CAMERA = "Camera"; + public static final String COMPONENT_EDITOR = "Editor"; + + public static final String TRANSITION_BACK_BUTTON = "BackButton"; + public static final String TRANSITION_UP_BUTTON = "UpButton"; + public static final String TRANSITION_PINCH_IN = "PinchIn"; + public static final String TRANSITION_PINCH_OUT = "PinchOut"; + public static final String TRANSITION_INTENT = "Intent"; + public static final String TRANSITION_ITEM_TAP = "ItemTap"; + public static final String TRANSITION_MENU_TAP = "MenuTap"; + public static final String TRANSITION_BUTTON_TAP = "ButtonTap"; + public static final String TRANSITION_SWIPE = "Swipe"; + + public static void initialize(Context context) {} + public static void showOptInDialogIfNeeded(Activity activity) {} + public static void setPendingTransitionCause(String cause) {} + public static void onContentViewChanged(String screenComponent, String screenName) {} + public static void onEvent(String category, String action, String label) {}; + public static void onEvent(String category, String action, String label, long optional_value) {}; +} -- cgit v1.2.3