@override
public androidcommandresult execute(final androidcommand command)
throws jsonexception else
} catch (final uiobjectnotfoundexception e) catch (final invalidcoordinate***ception e) catch (final exception e)
logger.debug("swiping from " + absstartpos.tostring() + " to "
+ absendpos.tostring() + " with steps: " + steps.tostring());
final
boolean rv = device.swipe(absstartpos.x.intvalue(),
absstartpos.y.intvalue(), absendpos.x.intvalue(),
absendpos.y.intvalue(), steps);
if (!rv)
return getsuccessresult(rv);
}
swipe的**其實很少,但是引數實際上不太少,param引數中包括了swipe的起始座標以及結束座標,還有乙個步驟數,就是你從起始座標到結束座標需要滑動多少次。我們到uiautomator裡面去看看 這個如何根據傳入的step來進行滑動呢
public
boolean
swipe(int downx, int downy, int upx, int upy, int steps, boolean drag)
if (drag)
systemclock.sleep(regular_click_length);
ret &= touchup(upx, upy);
return(ret);
}
挺清楚的了,原來swipe到最後是呼叫了touchdwon以及touchup方法,通過結束的x/y座標減去開始的x/y座標,再除以乙個步驟數,就得到了每次swipe需要多長的距離了
再繼續前面swipe的分析獲取到傳入的引數以後,首先判斷這個命令是針對於元素的滑動還是針對於裝置的滑動
public
static point getabsoluteposition(final point point, final rect displayrect,
final point offsets, final
boolean shouldcheckbounds)
throws uiobjectnotfoundexception, invalidcoordinate***ception
return absoluteposition;
}
這裡是分別對x,y座標進行轉換,分別傳入元素的寬高以及左頂點座標 看看實際轉換的**
private
static
double
translatecoordinate(double pointcoord, double length, double offset) else
if (math.abs(pointcoord) > 0 && math.abs(pointcoord) < 1) else
return translatedcoord + offset;
}
下來我們再來看看針對於裝置的swipe又是怎麼樣的呢
public
static point getdeviceabspos(final point point)
throws uiobjectnotfoundexception, invalidcoordinate***ception
改變的地方就是之前傳參傳的是元素的矩陣的座標,而這次傳入的是裝置的寬高。其他沒有什麼區別了。 uC OS II原始碼分析(四)
核心結構 1,臨界區,os enter critical 和os exit critical 為了處理臨界區 必須關中斷,等處理完畢後,再開中斷。關中斷可以避免其他任務或中斷進入臨界區 uc os ii 定義了這兩個巨集來實現,但注意一條 呼叫 uc os ii 功能函式時,中斷應該總是開著的。1 ...
gSOAP 原始碼分析 四
gsoap 原始碼分析 四 2012 6 2 邵盛松 前言本文主要說明gsoap中對client的認證分析 gsoap中包含了http基本認證,ntlm認證等,還可以自定義soap heard實現認證等 一 http基本認證 client在向server傳送請求時提供以使用者名稱和口令形式的憑證 g...
uC OS II原始碼分析(四)
核心結構 1,臨界區,os enter critical 和os exit critical 為了處理臨界區 必須關中斷,等處理完畢後,再開中斷。關中斷可以避免其他任務或中斷進入臨界區 uc os ii 定義了這兩個巨集來實現,但注意一條 呼叫 uc os ii 功能函式時,中斷應該總是開著的。1 ...