TouchUtils.java revision 44bc17c6b517aef35a390c81b5aa79c4f284f744
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.test; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.app.Activity; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.app.Instrumentation; 2144bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackbornimport android.graphics.Point; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.SystemClock; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.Display; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.Gravity; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.MotionEvent; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.View; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.ViewConfiguration; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.ViewGroup; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Reusable methods for generating touch events. These methods can be used with 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * InstrumentationTestCase or ActivityInstrumentationTestCase2 to simulate user interaction with 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the application through a touch screen. 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class TouchUtils { 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching in the center of the screen and dragging one quarter of the way down 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated {@link android.test.ActivityInstrumentationTestCase} is deprecated in favor of 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.test.ActivityInstrumentationTestCase2}, which provides more options for 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * configuring the Activity under test 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void dragQuarterScreenDown(ActivityInstrumentationTestCase test) { 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dragQuarterScreenDown(test, test.getActivity()); 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching in the center of the screen and dragging one quarter of the way down 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param activity The activity that is in the foreground of the test case 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void dragQuarterScreenDown(InstrumentationTestCase test, Activity activity) { 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Display display = activity.getWindowManager().getDefaultDisplay(); 5744bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn final Point size = new Point(); 5844bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn display.getSize(size); 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6044bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn final float x = size.x / 2.0f; 6144bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn final float fromY = size.y * 0.5f; 6244bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn final float toY = size.y * 0.75f; 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project drag(test, x, x, fromY, toY, 4); 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching in the center of the screen and dragging one quarter of the way up 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated {@link android.test.ActivityInstrumentationTestCase} is deprecated in favor of 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.test.ActivityInstrumentationTestCase2}, which provides more options for 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * configuring the Activity under test 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void dragQuarterScreenUp(ActivityInstrumentationTestCase test) { 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dragQuarterScreenUp(test, test.getActivity()); 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching in the center of the screen and dragging one quarter of the way up 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param activity The activity that is in the foreground of the test case 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void dragQuarterScreenUp(InstrumentationTestCase test, Activity activity) { 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Display display = activity.getWindowManager().getDefaultDisplay(); 8744bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn final Point size = new Point(); 8844bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn display.getSize(size); 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9044bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn final float x = size.x / 2.0f; 9144bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn final float fromY = size.y * 0.5f; 9244bc17c6b517aef35a390c81b5aa79c4f284f744Dianne Hackborn final float toY = size.y * 0.25f; 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project drag(test, x, x, fromY, toY, 4); 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Scroll a ViewGroup to the bottom by repeatedly calling 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #dragQuarterScreenUp(InstrumentationTestCase, Activity)} 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The ViewGroup that should be dragged 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated {@link android.test.ActivityInstrumentationTestCase} is deprecated in favor of 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.test.ActivityInstrumentationTestCase2}, which provides more options for 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * configuring the Activity under test 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void scrollToBottom(ActivityInstrumentationTestCase test, ViewGroup v) { 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scrollToBottom(test, test.getActivity(), v); 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Scroll a ViewGroup to the bottom by repeatedly calling 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #dragQuarterScreenUp(InstrumentationTestCase, Activity)} 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param activity The activity that is in the foreground of the test case 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The ViewGroup that should be dragged 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void scrollToBottom(InstrumentationTestCase test, Activity activity, 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ViewGroup v) { 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project View firstChild; 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int firstId = Integer.MIN_VALUE; 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int firstTop = Integer.MIN_VALUE; 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int prevId; 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int prevTop; 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project do { 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project prevId = firstId; 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project prevTop = firstTop; 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TouchUtils.dragQuarterScreenUp(test, activity); 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project firstChild = v.getChildAt(0); 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project firstId = firstChild.getId(); 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project firstTop = firstChild.getTop(); 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } while ((prevId != firstId) || (prevTop != firstTop)); 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Scroll a ViewGroup to the top by repeatedly calling 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #dragQuarterScreenDown(InstrumentationTestCase, Activity)} 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The ViewGroup that should be dragged 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated {@link android.test.ActivityInstrumentationTestCase} is deprecated in favor of 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.test.ActivityInstrumentationTestCase2}, which provides more options for 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * configuring the Activity under test 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void scrollToTop(ActivityInstrumentationTestCase test, ViewGroup v) { 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scrollToTop(test, test.getActivity(), v); 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Scroll a ViewGroup to the top by repeatedly calling 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #dragQuarterScreenDown(InstrumentationTestCase, Activity)} 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param activity The activity that is in the foreground of the test case 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The ViewGroup that should be dragged 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void scrollToTop(InstrumentationTestCase test, Activity activity, ViewGroup v) { 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project View firstChild; 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int firstId = Integer.MIN_VALUE; 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int firstTop = Integer.MIN_VALUE; 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int prevId; 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int prevTop; 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project do { 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project prevId = firstId; 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project prevTop = firstTop; 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TouchUtils.dragQuarterScreenDown(test, activity); 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project firstChild = v.getChildAt(0); 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project firstId = firstChild.getId(); 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project firstTop = firstChild.getTop(); 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } while ((prevId != firstId) || (prevTop != firstTop)); 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching the center of a view and dragging to the bottom of the screen. 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be dragged 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated {@link android.test.ActivityInstrumentationTestCase} is deprecated in favor of 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.test.ActivityInstrumentationTestCase2}, which provides more options for 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * configuring the Activity under test 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void dragViewToBottom(ActivityInstrumentationTestCase test, View v) { 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dragViewToBottom(test, test.getActivity(), v, 4); 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching the center of a view and dragging to the bottom of the screen. 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param activity The activity that is in the foreground of the test case 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be dragged 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void dragViewToBottom(InstrumentationTestCase test, Activity activity, View v) { 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dragViewToBottom(test, activity, v, 4); 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching the center of a view and dragging to the bottom of the screen. 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be dragged 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param stepCount How many move steps to include in the drag 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated {@link android.test.ActivityInstrumentationTestCase} is deprecated in favor of 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.test.ActivityInstrumentationTestCase2}, which provides more options for 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * configuring the Activity under test 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void dragViewToBottom(ActivityInstrumentationTestCase test, View v, 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int stepCount) { 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dragViewToBottom(test, test.getActivity(), v, stepCount); 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching the center of a view and dragging to the bottom of the screen. 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param activity The activity that is in the foreground of the test case 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be dragged 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param stepCount How many move steps to include in the drag 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void dragViewToBottom(InstrumentationTestCase test, Activity activity, View v, 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int stepCount) { 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int screenHeight = activity.getWindowManager().getDefaultDisplay().getHeight(); 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] xy = new int[2]; 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v.getLocationOnScreen(xy); 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int viewWidth = v.getWidth(); 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int viewHeight = v.getHeight(); 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final float x = xy[0] + (viewWidth / 2.0f); 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float fromY = xy[1] + (viewHeight / 2.0f); 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float toY = screenHeight - 1; 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project drag(test, x, x, fromY, toY, stepCount); 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching the center of a view and releasing quickly (before the tap timeout). 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be clicked 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void tapView(InstrumentationTestCase test, View v) { 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] xy = new int[2]; 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v.getLocationOnScreen(xy); 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int viewWidth = v.getWidth(); 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int viewHeight = v.getHeight(); 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final float x = xy[0] + (viewWidth / 2.0f); 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float y = xy[1] + (viewHeight / 2.0f); 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Instrumentation inst = test.getInstrumentation(); 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long downTime = SystemClock.uptimeMillis(); 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long eventTime = SystemClock.uptimeMillis(); 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MotionEvent event = MotionEvent.obtain(downTime, eventTime, 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MotionEvent.ACTION_DOWN, x, y, 0); 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.sendPointerSync(event); 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.waitForIdleSync(); 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventTime = SystemClock.uptimeMillis(); 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int touchSlop = ViewConfiguration.get(v.getContext()).getScaledTouchSlop(); 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project x + (touchSlop / 2.0f), y + (touchSlop / 2.0f), 0); 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.sendPointerSync(event); 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.waitForIdleSync(); 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventTime = SystemClock.uptimeMillis(); 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, x, y, 0); 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.sendPointerSync(event); 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.waitForIdleSync(); 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching the center of a view and cancelling (so no onClick should 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * fire, etc). 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be clicked 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void touchAndCancelView(InstrumentationTestCase test, View v) { 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] xy = new int[2]; 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v.getLocationOnScreen(xy); 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int viewWidth = v.getWidth(); 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int viewHeight = v.getHeight(); 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final float x = xy[0] + (viewWidth / 2.0f); 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float y = xy[1] + (viewHeight / 2.0f); 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Instrumentation inst = test.getInstrumentation(); 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long downTime = SystemClock.uptimeMillis(); 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long eventTime = SystemClock.uptimeMillis(); 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MotionEvent event = MotionEvent.obtain(downTime, eventTime, 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MotionEvent.ACTION_DOWN, x, y, 0); 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.sendPointerSync(event); 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.waitForIdleSync(); 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventTime = SystemClock.uptimeMillis(); 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int touchSlop = ViewConfiguration.get(v.getContext()).getScaledTouchSlop(); 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_CANCEL, 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project x + (touchSlop / 2.0f), y + (touchSlop / 2.0f), 0); 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.sendPointerSync(event); 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.waitForIdleSync(); 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching the center of a view and releasing. 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be clicked 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void clickView(InstrumentationTestCase test, View v) { 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] xy = new int[2]; 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v.getLocationOnScreen(xy); 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int viewWidth = v.getWidth(); 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int viewHeight = v.getHeight(); 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final float x = xy[0] + (viewWidth / 2.0f); 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float y = xy[1] + (viewHeight / 2.0f); 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Instrumentation inst = test.getInstrumentation(); 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long downTime = SystemClock.uptimeMillis(); 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long eventTime = SystemClock.uptimeMillis(); 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MotionEvent event = MotionEvent.obtain(downTime, eventTime, 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MotionEvent.ACTION_DOWN, x, y, 0); 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.sendPointerSync(event); 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.waitForIdleSync(); 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventTime = SystemClock.uptimeMillis(); 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int touchSlop = ViewConfiguration.get(v.getContext()).getScaledTouchSlop(); 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project x + (touchSlop / 2.0f), y + (touchSlop / 2.0f), 0); 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.sendPointerSync(event); 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.waitForIdleSync(); 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventTime = SystemClock.uptimeMillis(); 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, x, y, 0); 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.sendPointerSync(event); 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.waitForIdleSync(); 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep(1000); 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (InterruptedException e) { 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project e.printStackTrace(); 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching the center of a view, holding until it is a long press, and then releasing. 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be clicked 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated {@link android.test.ActivityInstrumentationTestCase} is deprecated in favor of 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.test.ActivityInstrumentationTestCase2}, which provides more options for 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * configuring the Activity under test 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void longClickView(ActivityInstrumentationTestCase test, View v) { 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project longClickView((InstrumentationTestCase) test, v); 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching the center of a view, holding until it is a long press, and then releasing. 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be clicked 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void longClickView(InstrumentationTestCase test, View v) { 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] xy = new int[2]; 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v.getLocationOnScreen(xy); 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int viewWidth = v.getWidth(); 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int viewHeight = v.getHeight(); 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final float x = xy[0] + (viewWidth / 2.0f); 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float y = xy[1] + (viewHeight / 2.0f); 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Instrumentation inst = test.getInstrumentation(); 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long downTime = SystemClock.uptimeMillis(); 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long eventTime = SystemClock.uptimeMillis(); 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MotionEvent event = MotionEvent.obtain(downTime, eventTime, 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MotionEvent.ACTION_DOWN, x, y, 0); 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.sendPointerSync(event); 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.waitForIdleSync(); 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventTime = SystemClock.uptimeMillis(); 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int touchSlop = ViewConfiguration.get(v.getContext()).getScaledTouchSlop(); 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project x + touchSlop / 2, y + touchSlop / 2, 0); 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.sendPointerSync(event); 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.waitForIdleSync(); 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Thread.sleep((long)(ViewConfiguration.getLongPressTimeout() * 1.5f)); 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (InterruptedException e) { 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project e.printStackTrace(); 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventTime = SystemClock.uptimeMillis(); 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, x, y, 0); 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.sendPointerSync(event); 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.waitForIdleSync(); 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching the center of a view and dragging to the top of the screen. 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be dragged 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated {@link android.test.ActivityInstrumentationTestCase} is deprecated in favor of 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.test.ActivityInstrumentationTestCase2}, which provides more options for 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * configuring the Activity under test 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void dragViewToTop(ActivityInstrumentationTestCase test, View v) { 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dragViewToTop((InstrumentationTestCase) test, v, 4); 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching the center of a view and dragging to the top of the screen. 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be dragged 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param stepCount How many move steps to include in the drag 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated {@link android.test.ActivityInstrumentationTestCase} is deprecated in favor of 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.test.ActivityInstrumentationTestCase2}, which provides more options for 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * configuring the Activity under test 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void dragViewToTop(ActivityInstrumentationTestCase test, View v, int stepCount) { 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dragViewToTop((InstrumentationTestCase) test, v, stepCount); 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching the center of a view and dragging to the top of the screen. 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be dragged 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void dragViewToTop(InstrumentationTestCase test, View v) { 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dragViewToTop(test, v, 4); 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching the center of a view and dragging to the top of the screen. 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be dragged 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param stepCount How many move steps to include in the drag 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void dragViewToTop(InstrumentationTestCase test, View v, int stepCount) { 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] xy = new int[2]; 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v.getLocationOnScreen(xy); 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int viewWidth = v.getWidth(); 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int viewHeight = v.getHeight(); 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final float x = xy[0] + (viewWidth / 2.0f); 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float fromY = xy[1] + (viewHeight / 2.0f); 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float toY = 0; 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project drag(test, x, x, fromY, toY, stepCount); 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get the location of a view. Use the gravity param to specify which part of the view to 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * return. 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v View to find 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param gravity A combination of (TOP, CENTER_VERTICAL, BOTTOM) and (LEFT, CENTER_HORIZONTAL, 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * RIGHT) 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param xy Result 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static void getStartLocation(View v, int gravity, int[] xy) { 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v.getLocationOnScreen(xy); 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int viewWidth = v.getWidth(); 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int viewHeight = v.getHeight(); 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (gravity & Gravity.VERTICAL_GRAVITY_MASK) { 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case Gravity.TOP: 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case Gravity.CENTER_VERTICAL: 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project xy[1] += viewHeight / 2; 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case Gravity.BOTTOM: 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project xy[1] += viewHeight - 1; 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Same as top -- do nothing 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (gravity & Gravity.HORIZONTAL_GRAVITY_MASK) { 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case Gravity.LEFT: 5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case Gravity.CENTER_HORIZONTAL: 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project xy[0] += viewWidth / 2; 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case Gravity.RIGHT: 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project xy[0] += viewWidth - 1; 5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project break; 5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project default: 5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Same as left -- do nothing 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching a view and dragging it by the specified amount. 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be dragged 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param gravity Which part of the view to use for the initial down event. A combination of 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (TOP, CENTER_VERTICAL, BOTTOM) and (LEFT, CENTER_HORIZONTAL, RIGHT) 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param deltaX Amount to drag horizontally in pixels 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param deltaY Amount to drag vertically in pixels 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return distance in pixels covered by the drag 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated {@link android.test.ActivityInstrumentationTestCase} is deprecated in favor of 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.test.ActivityInstrumentationTestCase2}, which provides more options for 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * configuring the Activity under test 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int dragViewBy(ActivityInstrumentationTestCase test, View v, int gravity, 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int deltaX, int deltaY) { 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return dragViewBy((InstrumentationTestCase) test, v, gravity, deltaX, deltaY); 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching a view and dragging it by the specified amount. 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be dragged 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param gravity Which part of the view to use for the initial down event. A combination of 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (TOP, CENTER_VERTICAL, BOTTOM) and (LEFT, CENTER_HORIZONTAL, RIGHT) 5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param deltaX Amount to drag horizontally in pixels 5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param deltaY Amount to drag vertically in pixels 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return distance in pixels covered by the drag 5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated {@link android.test.ActivityInstrumentationTestCase} is deprecated in favor of 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.test.ActivityInstrumentationTestCase2}, which provides more options for 5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * configuring the Activity under test 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5699db3d07b9620b4269ab33f78604a36327e536ce1Jean-Baptiste Queru @Deprecated 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int dragViewBy(InstrumentationTestCase test, View v, int gravity, int deltaX, 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int deltaY) { 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] xy = new int[2]; 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project getStartLocation(v, gravity, xy); 5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int fromX = xy[0]; 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int fromY = xy[1]; 5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int distance = (int) Math.sqrt(deltaX * deltaX + deltaY * deltaY); 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project drag(test, fromX, fromX + deltaX, fromY, fromY + deltaY, distance); 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return distance; 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching a view and dragging it to a specified location. 5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be dragged 5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param gravity Which part of the view to use for the initial down event. A combination of 5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (TOP, CENTER_VERTICAL, BOTTOM) and (LEFT, CENTER_HORIZONTAL, RIGHT) 5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param toX Final location of the view after dragging 5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param toY Final location of the view after dragging 5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return distance in pixels covered by the drag 5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated {@link android.test.ActivityInstrumentationTestCase} is deprecated in favor of 5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.test.ActivityInstrumentationTestCase2}, which provides more options for 6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * configuring the Activity under test 6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int dragViewTo(ActivityInstrumentationTestCase test, View v, int gravity, int toX, 6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int toY) { 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return dragViewTo((InstrumentationTestCase) test, v, gravity, toX, toY); 6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching a view and dragging it to a specified location. 6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be dragged 6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param gravity Which part of the view to use for the initial down event. A combination of 6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (TOP, CENTER_VERTICAL, BOTTOM) and (LEFT, CENTER_HORIZONTAL, RIGHT) 6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param toX Final location of the view after dragging 6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param toY Final location of the view after dragging 6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return distance in pixels covered by the drag 6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int dragViewTo(InstrumentationTestCase test, View v, int gravity, int toX, 6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int toY) { 6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] xy = new int[2]; 6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project getStartLocation(v, gravity, xy); 6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int fromX = xy[0]; 6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int fromY = xy[1]; 6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int deltaX = fromX - toX; 6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int deltaY = fromY - toY; 6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int distance = (int)Math.sqrt(deltaX * deltaX + deltaY * deltaY); 6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project drag(test, fromX, toX, fromY, toY, distance); 6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return distance; 6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching a view and dragging it to a specified location. Only moves horizontally. 6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be dragged 6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param gravity Which part of the view to use for the initial down event. A combination of 6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (TOP, CENTER_VERTICAL, BOTTOM) and (LEFT, CENTER_HORIZONTAL, RIGHT) 6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param toX Final location of the view after dragging 6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return distance in pixels covered by the drag 6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated {@link android.test.ActivityInstrumentationTestCase} is deprecated in favor of 6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.test.ActivityInstrumentationTestCase2}, which provides more options for 6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * configuring the Activity under test 6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int dragViewToX(ActivityInstrumentationTestCase test, View v, int gravity, 6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int toX) { 6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return dragViewToX((InstrumentationTestCase) test, v, gravity, toX); 6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching a view and dragging it to a specified location. Only moves horizontally. 6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be dragged 6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param gravity Which part of the view to use for the initial down event. A combination of 6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (TOP, CENTER_VERTICAL, BOTTOM) and (LEFT, CENTER_HORIZONTAL, RIGHT) 6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param toX Final location of the view after dragging 6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return distance in pixels covered by the drag 6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int dragViewToX(InstrumentationTestCase test, View v, int gravity, int toX) { 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] xy = new int[2]; 6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project getStartLocation(v, gravity, xy); 6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int fromX = xy[0]; 6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int fromY = xy[1]; 6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int deltaX = fromX - toX; 6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project drag(test, fromX, toX, fromY, fromY, deltaX); 6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return deltaX; 6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching a view and dragging it to a specified location. Only moves vertically. 6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be dragged 6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param gravity Which part of the view to use for the initial down event. A combination of 6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (TOP, CENTER_VERTICAL, BOTTOM) and (LEFT, CENTER_HORIZONTAL, RIGHT) 6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param toY Final location of the view after dragging 6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return distance in pixels covered by the drag 6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated {@link android.test.ActivityInstrumentationTestCase} is deprecated in favor of 6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.test.ActivityInstrumentationTestCase2}, which provides more options for 6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * configuring the Activity under test 6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int dragViewToY(ActivityInstrumentationTestCase test, View v, int gravity, 7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int toY) { 7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return dragViewToY((InstrumentationTestCase) test, v, gravity, toY); 7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching a view and dragging it to a specified location. Only moves vertically. 7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param v The view that should be dragged 7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param gravity Which part of the view to use for the initial down event. A combination of 7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (TOP, CENTER_VERTICAL, BOTTOM) and (LEFT, CENTER_HORIZONTAL, RIGHT) 7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param toY Final location of the view after dragging 7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return distance in pixels covered by the drag 7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int dragViewToY(InstrumentationTestCase test, View v, int gravity, int toY) { 7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int[] xy = new int[2]; 7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project getStartLocation(v, gravity, xy); 7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int fromX = xy[0]; 7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int fromY = xy[1]; 7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int deltaY = fromY - toY; 7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project drag(test, fromX, fromX, fromY, toY, deltaY); 7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return deltaY; 7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching a specific location and dragging to a new location. 7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param fromX X coordinate of the initial touch, in screen coordinates 7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param toX Xcoordinate of the drag destination, in screen coordinates 7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param fromY X coordinate of the initial touch, in screen coordinates 7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param toY Y coordinate of the drag destination, in screen coordinates 7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param stepCount How many move steps to include in the drag 7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @deprecated {@link android.test.ActivityInstrumentationTestCase} is deprecated in favor of 7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.test.ActivityInstrumentationTestCase2}, which provides more options for 7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * configuring the Activity under test 7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Deprecated 7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void drag(ActivityInstrumentationTestCase test, float fromX, float toX, 7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float fromY, float toY, int stepCount) { 7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project drag((InstrumentationTestCase) test, fromX, toX, fromY, toY, stepCount); 7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Simulate touching a specific location and dragging to a new location. 7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param test The test case that is being run 7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param fromX X coordinate of the initial touch, in screen coordinates 7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param toX Xcoordinate of the drag destination, in screen coordinates 7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param fromY X coordinate of the initial touch, in screen coordinates 7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param toY Y coordinate of the drag destination, in screen coordinates 7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param stepCount How many move steps to include in the drag 7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void drag(InstrumentationTestCase test, float fromX, float toX, float fromY, 7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float toY, int stepCount) { 7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Instrumentation inst = test.getInstrumentation(); 7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long downTime = SystemClock.uptimeMillis(); 7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long eventTime = SystemClock.uptimeMillis(); 7699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float y = fromY; 7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float x = fromX; 7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float yStep = (toY - fromY) / stepCount; 7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float xStep = (toX - fromX) / stepCount; 7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MotionEvent event = MotionEvent.obtain(downTime, eventTime, 7778621cfa43fd12b5ad1376eb1a2454729ce9d9c7eMarc Capdevielle MotionEvent.ACTION_DOWN, x, y, 0); 7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.sendPointerSync(event); 7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.waitForIdleSync(); 7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0; i < stepCount; ++i) { 7829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project y += yStep; 7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project x += xStep; 7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventTime = SystemClock.uptimeMillis(); 7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, x, y, 0); 7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.sendPointerSync(event); 7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.waitForIdleSync(); 7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventTime = SystemClock.uptimeMillis(); 7918621cfa43fd12b5ad1376eb1a2454729ce9d9c7eMarc Capdevielle event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, x, y, 0); 7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.sendPointerSync(event); 7939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inst.waitForIdleSync(); 7949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 796