指定したモンキー操作をスクリプトで実行


モンキーがモンキーだと知ってるけどJAr相携帯電話は擬似ランダムイベントストリームを送信するが,monkeyのAPI研究により,−fというパラメータによりmonkey実行スクリプトを実現できることが分かった.
monkeyのソースコードには、次の例が表示されます.
/** 
 * monkey event queue. It takes a script to produce events 
 *  
 * sample script format: 
 *      type= raw events 
 *      count= 10 
 *      speed= 1.0 
 *      start data >> 
 *      captureDispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314, 
 *          0.06666667,0,0.0,0.0,65539,0) 
 *      captureDispatchKey(5113146,5113146,0,20,0,0,0,0) 
 *      captureDispatchFlip(true) 
 *      ... 
 */  

このことから,scriptを記述することによってmonkeyを用いた指定操作を実現できることが分かった.
まず,被験プログラムのパケット名とlanch activityを取得する必要がある.
次にscriptスクリプトを作成する必要があります.具体的には、次のようにします.
type= point
count= 4
speed= 1.0   
start data >>   
LaunchActivity(com.jason.test,com.jason.test.MainActivity)

captureDispatchPointer(0,0,0,524,390,0,0,0,0,0,0,0);
captureDispatchPointer(1,1,1,524,390,0,0,0,0,0,0,0); 
UserWait(300);
captureDispatchPointer(0,0,0,231,648,0,0,0,0,0,0,0);
captureDispatchPointer(1,1,1,231,648,0,0,0,0,0,0,0);
UserWait(300);
captureDispatchPointer(0,0,0,698,231,0,0,0,0,0,0,0);
captureDispatchPointer(1,1,1,698,231,0,0,0,0,0,0,0);
UserWait(300);
captureDispatchPointer(0,0,0,100,200,0,0,0,0,0,0,0);
captureDispatchPointer(1,1,1,100,200,0,0,0,0,0,0,0);

この例はクリックイベントのみを用い,APIにはDispatchKey(携帯電話のハードウェア別),DispatchTrakball(トラックボール)など,他にもよく用いられるイベントがある.
上記の例では、いくつかの重要なパラメータについて説明する必要があります.
DispatchPointer(downTime, eventTime,action, x, y, pressure, size, metaState, xPrecision, yPrecision,device, edgeFlags);  
ここで、action=0の場合は押下、action=1の場合は移動、action=2の場合は持ち上げ、action=3の場合はキャンセルとなる.x,yは座標点である.pressureは圧力値タイプがfloat,sizeはクリック範囲サイズタイプがfloatである.デバイスはデバイスIDです.
他のパラメータは依然として研究中である.
以上のスクリプトを作成したら、スクリプトを/sdcard/monkeyに配置します.script
次に、コマンドを入力します.
adb shell monkey -f/sdcard/monkey.script -v 1
このうち1は、スクリプトの実行回数です.