from com.android.monkeyrunner import MonkeyRunner , MonkeyDevice
import os
import time
import math
import re
def getx ( n ):
if n in ( '1' , '4' , '7' ):
return 50
elif n in ( '2' , '5' , '8' , '0' ):
return 100
else :
return 200
def gety ( n ):
if n in ( '1' , '2' , '3' ):
return 150
elif n in ( '4' , '5' , '6' ):
return 200
elif n in ( '7' , '8' , '9' ):
return 250
else :
return 300
sqrt = re . compile ( r'([0-9]+)' )
percent = re . compile ( r'([0-9]+)\ %0f ([0-9]+)' )
print "Waiting for device!"
device = MonkeyRunner . waitForConnection ()
print "Connected to device!"
dummy = raw_input ( 'press enter to start' )
prev_question = ''
for i in range ( 300 ):
filename = " %d .png" % i
device . takeSnapshot () . getSubImage (( 10 , 10 , 220 , 40 )) . writeToFile ( filename , 'png' )
question = os . popen ( "./ocr.sh %s " % filename ) . read ()
try :
if '+' not in question and '-' not in question and '/' not in question and '*' not in question and '%' not in question and 'i' not in question :
result = int ( question [ 0 : - 1 ]) * int ( question [ 0 : - 1 ])
elif '%' in question :
result = int ( percent . search ( question ) . group ( 1 )) * int ( percent . search ( question ) . group ( 2 )) / 100 ;
else :
result = eval ( question )
except :
continue
if i > 0 and prev_question == question :
continue
print " %s = %d " % ( question , result )
result_str = str ( result )
if '.' in question and '.' not in result_str :
result_str += '.0'
if 'm' in question :
result_str = sqrt . search ( result_str ) . group ( 1 )
time . sleep ( 0.1 )
for ch in result_str :
device . touch ( getx ( ch ), gety ( ch ), 'DOWN_AND_UP' )
time . sleep ( 0.1 )
prev_question = question
在python下对比两张图片是一件很容易的事情,在monkey runner下进行图片比对我还没有找到好的方法,python 中的PIL调用的是C模块,而monkey runner是java,所以不能在monkey runner中直接使用PIL库,还好上面的代码给了我解决问题的思路,在monkey runner中建立compareImage.sh,然后执行python脚本比对不就OK了吗