summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNancy Chen <nancychen@google.com>2014-08-12 14:44:53 -0700
committerNancy Chen <nancychen@google.com>2014-08-13 22:52:46 -0700
commit0d3a73932a23cb07168d25ec331a9abf72817346 (patch)
tree0990b35a160ab5ee38071e7dabcac98cfc47ac93 /src
parent60b0368d6f65e95a08aea7f0b46b8729bc2aebc0 (diff)
downloadandroid_packages_apps_Dialer-0d3a73932a23cb07168d25ec331a9abf72817346.tar.gz
android_packages_apps_Dialer-0d3a73932a23cb07168d25ec331a9abf72817346.tar.bz2
android_packages_apps_Dialer-0d3a73932a23cb07168d25ec331a9abf72817346.zip
Send MotionEvent with touch coordinates to call intent
Be able to send the x,y coordinates of a user's touch action on an element that introduces a call in order to start the InCallUI animation from that touch point. This change covers the call log "call back"/recent card. Bug: 15284651 Change-Id: Ife6fe003fcf0dd106640add5d65c10fd8fd1cb9e
Diffstat (limited to 'src')
-rw-r--r--src/com/android/dialer/DialtactsActivity.java18
-rw-r--r--src/com/android/dialer/util/DialerUtils.java14
2 files changed, 32 insertions, 0 deletions
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 5a76ffa74..12c52da9c 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -65,6 +65,7 @@ import android.widget.Toast;
import com.android.contacts.common.CallUtil;
import com.android.contacts.common.dialog.ClearFrequentsDialog;
import com.android.contacts.common.interactions.ImportExportDialogFragment;
+import com.android.contacts.common.interactions.TouchPointManager;
import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
import com.android.contacts.common.widget.FloatingActionButtonController;
import com.android.dialer.activity.TransactionSafeActivity;
@@ -89,6 +90,7 @@ import com.android.dialer.widget.ActionBarController;
import com.android.dialer.widget.SearchEditTextLayout;
import com.android.dialer.widget.SearchEditTextLayout.OnBackButtonClickedListener;
import com.android.dialerbind.DatabaseHelperManager;
+import com.android.incallui.CallCardFragment;
import com.android.phone.common.animation.AnimUtils;
import com.android.phone.common.animation.AnimationListenerAdapter;
@@ -100,6 +102,7 @@ import java.util.Locale;
* The dialer tab's title is 'phone', a more common name (see strings.xml).
*/
public class DialtactsActivity extends TransactionSafeActivity implements View.OnClickListener,
+ View.OnTouchListener,
DialpadFragment.OnDialpadQueryChangedListener,
OnListFragmentScrolledListener,
DialpadFragment.HostInterface,
@@ -387,6 +390,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
int floatingActionButtonWidth = resources.getDimensionPixelSize(
R.dimen.floating_action_button_width);
mFloatingActionButton.setOnClickListener(this);
+ mFloatingActionButton.setOnTouchListener(this);
mFloatingActionButtonController = new FloatingActionButtonController(this,
floatingActionButtonContainer);
mFloatingActionButtonDialpadMarginBottomOffset = resources.getDimensionPixelOffset(
@@ -463,6 +467,8 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
if (!mIsDialpadShown) {
maybeExitSearchUi();
}
+
+ recordTouchEvent(v, event);
return false;
}
});
@@ -564,6 +570,18 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
}
@Override
+ public boolean onTouch(View view, MotionEvent event) {
+ recordTouchEvent(view, event);
+ return false;
+ }
+
+ private void recordTouchEvent(View view, MotionEvent event) {
+ if (event.getAction() == MotionEvent.ACTION_DOWN) {
+ TouchPointManager.getInstance().setPoint((int) event.getRawX(), (int) event.getRawY());
+ }
+ }
+
+ @Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_history:
diff --git a/src/com/android/dialer/util/DialerUtils.java b/src/com/android/dialer/util/DialerUtils.java
index e24b642eb..7f6e75b57 100644
--- a/src/com/android/dialer/util/DialerUtils.java
+++ b/src/com/android/dialer/util/DialerUtils.java
@@ -23,8 +23,11 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
+import android.graphics.Point;
import android.net.Uri;
+import android.os.Bundle;
import android.provider.Telephony;
+import android.telecomm.TelecommManager;
import android.text.TextUtils;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
@@ -33,7 +36,10 @@ import android.widget.TextView;
import android.widget.Toast;
import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.interactions.TouchPointManager;
import com.android.dialer.R;
+import com.android.incallui.CallCardFragment;
+import com.android.incallui.Log;
import java.util.List;
import java.util.Locale;
@@ -66,6 +72,14 @@ public class DialerUtils {
public static void startActivityWithErrorToast(Context context, Intent intent, int msgId) {
try {
if (Intent.ACTION_CALL.equals(intent.getAction())) {
+ // All dialer-initiated calls should pass the touch point to the InCallUI
+ Point touchPoint = TouchPointManager.getInstance().getPoint();
+ if (touchPoint.x != 0 || touchPoint.y != 0) {
+ Bundle extras = new Bundle();
+ extras.putParcelable(TouchPointManager.TOUCH_POINT, touchPoint);
+ intent.putExtra(TelecommManager.EXTRA_OUTGOING_CALL_EXTRAS, extras);
+ }
+
((Activity) context).startActivityForResult(intent, 0);
} else {
context.startActivity(intent);