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了吗