package Ġcom . w ix . de tox . espress o . action Ċ Ċ import Ġandroidx . test . espress o . Ui Controller Ċ import Ġandroidx . test . espress o . action . Tap per Ċ import Ġcom . w ix . de tox . espress o . common . Det ox View Configurations . get Pract ical Tap Timeout Ċ import Ġcom . w ix . de tox . espress o . common . Motion Events Ċ Ċ /** Ċ Ġ* ĠAn Ġimplementation Ġalternative Ġto ĠE sp ress o 's Ġ[ android x . test . espress o . action . Tap . SINGLE ]. Ċ Ġ* Ċ Ġ* ĠThe Ġmain Ġdifferent Ġis : ĠInstead Ġof Ġinject ing Ġtwo Ġidle - waiting Ġevents Ġ( down , Ġthen Ġup ), Ġwe Ġuse Ċ Ġ* Ġ[ Ui Controller . inject Motion Event Sequence ] Ġin Ġorder Ġto Ġinject Ġthe Ġtwo Ġsimultaneously , Ġsuch Ġthat Ġno Ċ Ġ* Ġidle - wait Ġis Ġemploy ed Ġin Ġbetween . Ċ Ġ* Ċ Ġ* ĠThe Ġmain Ġgoal Ġhere Ġis Ġto Ġfix Ġa Ġproblem Ġwhere Ġthe Ġgap Ġbetween Ġthe Ġ' down ' Ġand Ġ' up ' Ġbecomes Ġtoo Ġlong Ċ Ġ* Ġto Ġthe Ġpoint Ġwhere Ġthe Ġtap Ġgets Ġregistered Ġas Ġa Ġlong Ġtap Ġ( true Ġstory ). Ċ Ġ* Ċ Ġ* ĠThis Ġshould Ġbe ĠE sp ress o 's Ġdefault Ġimplementation ĠI MO . Ċ Ġ*/ Ċ class ĠDet ox Single Tap ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmotion Events : ĠMotion Events Ġ= ĠMotion Events (), ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtap Timeout : ĠLong Ġ= Ġget Pract ical Tap Timeout ()) ĊĠĠĠ Ġ: ĠT apper Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġsend Tap ( ui Controller : ĠUi Controller ?, Ġcoordinates : ĠFloat Array ?, Ġprecision : ĠFloat Array ?): ĠT apper . Status ĊĠĠĠĠĠĠĠ Ġ= Ġsend Tap ( ui Controller , Ġcoordinates , Ġprecision , Ġ 0 , Ġ 0 ) ĊĊĠĠĠ Ġoverride Ġfun Ġsend Tap ( ui Controller : ĠUi Controller ?, Ġcoordinates : ĠFloat Array ?, Ġprecision : ĠFloat Array ?, Ġinput Device : ĠInt , Ġbutton State : ĠInt ): ĠT apper . Status Ġ{ ĊĠĠĠĠĠĠĠ Ġui Controller !! ĊĠĠĠĠĠĠĠ Ġcoordinates !! ĊĠĠĠĠĠĠĠ Ġprecision !! ĊĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġcoordinates [ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġcoordinates [ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġdown Event Ġ= Ġmotion Events . obtain Down Event ( x , Ġy , Ġprecision ) ĊĠĠĠĠĠĠĠ Ġval Ġup Event Ġ= Ġmotion Events . obtain Up Event ( down Event , Ġdown Event . event Time Ġ+ ĠEVENT S _ TIME _ GAP _ MS , Ġx , Ġy ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġui Controller . inject Motion Event Sequence ( array ListOf ( down Event , Ġup Event )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Controller . loop MainThread For At Least ( tap Timeout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠT apper . Status . SUCCESS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠT apper . Status . FAILURE ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdown Event . recycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġup Event . recycle () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ### ĠIMPORT ANT ĠNOTE ĠON ĠTHIS : ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠGiven Ġthe Ġimplementation Ġof Ġ[ Ui Controller Impl . inject Motion Event Sequence ]( android x . test . espress o . base . Ui Controller Impl . inject Motion Event Sequence ) Ġ- Ġwhich ĊĠĠĠĠĠĠĠĠ Ġ* Ġeventually Ġhandles Ġthe Ġevents Ġinjection , Ġide ally Ġwe Ġwould Ġjust Ġuse Ġ 1 0 ms . ĠActually , Ġin Ġthe Ġoriginal Ġimplementation , Ġthat 's Ġwhat Ġwe Ġdid . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠHowever , Ġrecently , Ġannoying ĠRN Ġrelated Ġbugs Ġwe Ġcan 't Ġcontrol Ġsudden ly Ġcame Ġto Ġbe Ġ([ this Ġone ]( https :// github . com / software - m ansion / react - native - re animated / issues / 5 9 6 ) ĊĠĠĠĠĠĠĠĠ Ġ* Ġin Ġparticular ), Ġand Ġso Ġin Ġorder Ġto Ġcomp ly , Ġwe Ġneed Ġto Ġtry Ġto Ġmeet Ġit Ġhalf - way Ġand Ġuse Ġa Ġtime Ġgap Ġthat 's Ġmore Ġlikely Ġto Ġbe Ġapplied Ġby Ġa Ġreal Ġuser , ĊĠĠĠĠĠĠĠĠ Ġ* Ġeven Ġthough Ġfor Ġall Ġwe Ġknow Ġ 1 0 ms Ġis Ġenough Ġfor Ġany ĠAndroid Ġnative Ġ/ Ġpure - RN ĠView . ĠThe Ġtrade - off Ġhere , Ġhowever , Ġbeing Ġthat Ġthe Ġmore Ġwe Ġwait , Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġhigher Ġthe Ġchance Ġis Ġfor Ġa Ġsimple Ġtap Ġto Ġaccidentally Ġbe Ġregistered Ġas Ġa Ġ_ long _ Ġtap Ġ( i . e . Ġon Ġslow Ġdevices / em ulators ). ĊĠĠĠĠĠĠĠĠ Ġ* ĠLast ly , ĠWith Ġthe Ġcase Ġof Ġ_ that _ Ġspecific Ġbug , Ġwe Ġimplicitly Ġindirect ly Ġwork Ġaround Ġit Ġwith Ġthis Ġapproach , Ġbecause Ġwe Ġhighly Ġincrease ĊĠĠĠĠĠĠĠĠ Ġ* Ġthe Ġchance Ġof Ġallowing Ġa Ġframe Ġto Ġbe Ġdrawn Ġin Ġbetween Ġthe Ġ_ down _ Ġand Ġ_ up _ Ġevents . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEVENT S _ TIME _ GAP _ MS Ġ= Ġ 3 0 ĊĠĠĠ Ġ} Ċ } Ċ