Improve Dialer analytics
* Send screen view for first fragment loaded inside ListsFragment
* Send screen view for voicemail playback fragment
* Send screen view for currently active fragment when activity is restarted
* Don't send spurious screen views on rotation
* Send screen views for call log fragments in call log activity, and
differentiate between them with a tag
Bug: 18158037
Change-Id: I09fda53db33f6a6acc4a3b477de992aa94921c71
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 241080f..9c8137e 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -182,6 +182,7 @@
* be commited.
*/
private boolean mStateSaved;
+ private boolean mIsRestarting;
private boolean mInDialpadSearch;
private boolean mInRegularSearch;
private boolean mClearSearchOnPause;
@@ -477,12 +478,27 @@
mShowDialpadOnResume = false;
}
mFirstLaunch = false;
+
+ if (mIsRestarting) {
+ // This is only called when the activity goes from resumed -> paused -> resumed, so it
+ // will not cause an extra view to be sent out on rotation
+ if (mIsDialpadShown) {
+ AnalyticsUtil.sendScreenView(mDialpadFragment, this);
+ }
+ mIsRestarting = false;
+ }
prepareVoiceSearchButton();
mDialerDatabaseHelper.startSmartDialUpdateThread();
updateFloatingActionButtonControllerAlignment(false /* animate */);
}
@Override
+ protected void onRestart() {
+ super.onRestart();
+ mIsRestarting = true;
+ }
+
+ @Override
protected void onPause() {
if (mClearSearchOnPause) {
hideDialpadAndSearchUi();
@@ -624,6 +640,7 @@
}
mIsDialpadShown = true;
mDialpadFragment.setAnimate(animate);
+ mListsFragment.setUserVisibleHint(false);
AnalyticsUtil.sendScreenView(mDialpadFragment);
final FragmentTransaction ft = getFragmentManager().beginTransaction();
@@ -672,6 +689,8 @@
}
mIsDialpadShown = false;
mDialpadFragment.setAnimate(animate);
+ mListsFragment.setUserVisibleHint(true);
+ mListsFragment.sendScreenViewForCurrentPosition();
updateSearchFragmentPosition();
@@ -898,6 +917,7 @@
transaction.commit();
mListsFragment.getView().animate().alpha(0).withLayer();
+ mListsFragment.setUserVisibleHint(false);
}
/**
@@ -923,6 +943,14 @@
transaction.commit();
mListsFragment.getView().animate().alpha(1).withLayer();
+ if (!mDialpadFragment.isVisible()) {
+ // If the dialpad fragment wasn't previously visible, then send a screen view because
+ // we are exiting regular search. Otherwise, the screen view will be sent by
+ // {@link #hideDialpadFragment}.
+ mListsFragment.sendScreenViewForCurrentPosition();
+ mListsFragment.setUserVisibleHint(true);
+ }
+
mActionBarController.onSearchUiExited();
}