/**
* 寻找节点并点击
*
*
@param
node节点
*
@throws
UiObjectNotFoundException
*/
public
void
access(String
node
)
throws
UiObjectNotFoundException {
UiObject
object
;
sleep(1000);
in:
for
(
int
i
= 0;
i
< 30;
i
++) {
object
=
new
UiObject(
new
UiSelector().text(
node
));
if
(
object
.exists()) {
sleep(1000);
object
.click();
sleep(1000);
break
in;
}
else
{
sleep(1000);
}
}
}
/**
* 点击左上角
*
*
@param
node 节点
*
@throws
UiObjectNotFoundException
*/
public
void
accessTopLeft(String
node
)
throws
UiObjectNotFoundException {
UiObject
object
;
Rect
r
;
in:
for
(
int
i
= 0;
i
< 30;
i
++) {
object
=
new
UiObject(
new
UiSelector().text(
node
));
if
(
object
.exists()) {
r
=
object
.getBounds();
sleep(1000);
UiDevice.getInstance().click(
r
.
left
, (
r
.
top
- 5));
sleep(1000);
break
in;
}
else
{
sleep(1000);
}
}
}
/**
* 读取文件
*
@param
path 文件路径
*
@param
jsonContent 需要解析的内容
*
@return
*
@throws
IOException
*/
public
String FileOut(String
path
, String
jsonContent
)
throws
IOException {
String
content
=
""
;
// 文件内容字符串
// 打开文件
File
file
=
new
File(
path
);
// 如果path是传递过来的参数,可以做一个非目录的判断
if
(
file
.isDirectory()) {
}
else
{
BufferedReader
in
=
new
BufferedReader(
new
InputStreamReader(
new
FileInputStream(
file
),
"UTF-8"
));
if
(
in
!=
null
) {
String
line
;
// 分行读取
while
((
line
=
in
.readLine()) !=
null
) {
content
+=
line
;
}
in
.close();
}
}
return
content
;
}
/**
* 获取聊天结果后解析
*
*
@param
jsonContent 需要解析的内容
*
*
@param
jsonResult 需要解析的结果
*
*
@throws
IOException
*
@throws
JSONException
*/
public
String getJosn(String
jsonContent
, String
jsonResult
)
throws
IOException {
String
con
=
jsonContent
;
JSONObject
root
;
try
{
root
=
new
JSONObject(
con
.toString());
con
=
root
.getString(
jsonResult
);
}
catch
(Exception
e
) {
//
TODO
: handle exception
e
.printStackTrace();
}
return
con
;
}
/**
* 随机时间 3
-
5秒
*
*
@return
*/
public
void
reminderSleep() {
java.util.Random
random
=
new
java.util.Random();
int
result
=
random
.nextInt(2);
int
i
= (
result
+ 3) * 1000;
sleep(
i
);
}
/**
* 随机数
*
*
@param
n 0
-
n种随机数字
*
@return
*/
public
int
randomN(
int
n
) {
int
i
= 0;
java.util.Random
random
=
new
java.util.Random();
i
=
random
.nextInt(
n
);
return
i
;
}
/**
* linux命令
*
@param
cmd 需要执行的命令
*
@throws
IOException
*/
public
void
cmd(String
cmd
)
throws
IOException {
Runtime.getRuntime().exec(
cmd
);
sleep(1000);
}
/**
* 三次返回并点击Home键
*/
public
void
back() {
UiDevice.getInstance().pressBack();
UiDevice.getInstance().pressBack();
UiDevice.getInstance().pressBack();
UiDevice.getInstance().pressHome();
}
/**
* 获取当前时间并判断
*
@param
time需要判断的时间
*
@return
*
@throws
InterruptedException
*/
public
boolean
time(String
time
)
throws
InterruptedException {
in:
for
(
int
i
= 0;
i
< 20;
i
++) {
SimpleDateFormat
format
=
new
SimpleDateFormat(
"yyyy:MM:dd HH:mm:ss"
);
String
str
=
format
.format(
new
Date());
if
(
str
.equals(
time
)) {
break
in;
}
else
{
Thread.sleep(60000);
}
}
return
true
;
}
/**
* 写入一个JSON
*
@param
runPath 路径
*
@param
s
*
@throws
IOException
*/
public
void
putJSON(String
runPath
)
throws
IOException {
// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd
// HH:mm:ss");
// String str = format.format(new Date());
runPath
=
"mnt/sdcard/wlk/config/1.txt"
;
FileWriter
fw
=
new
FileWriter(
runPath
,
true
);
fw
.write(
"{"
);
for
(
int
i
= 1;
i
< 2000;
i
++) {
fw
.write(
"\"N"
+
i
+
"账号\":\""
+
"\r\n"
);
fw
.write(
"\",\"N"
+
i
+
"密码\":\""
+
"\r\n"
);
fw
.write(
"\","
);
}
fw
.write(
"}"
);
fw
.flush();
fw
.close();
}
/**
* 写入
*
@param
path 路径
*
@param
content 写入内容
*
@throws
IOException
*/
public
void
putContent(String
path
, String
content
)
throws
IOException {
FileWriter
fw
=
new
FileWriter(
path
,
true
);
//true 不覆盖写入
fw
.write(
content
);
fw
.flush();
//清控队列
fw
.close();
//关闭
}
/**
* 获得输入框 输入内容 并点击发送
*
@param
content 需要输入的内容 输入中文需要切换输入法
*
@throws
UiObjectNotFoundException
*
@throws
IOException
*/
public
void
setText(String
content
)
throws
UiObjectNotFoundException, IOException {
UiObject
object
;
String
cmd2
=
"am broadcast -a com.example.android.softkeyboard -e content "
;
object
=
new
UiObject(
new
UiSelector().className(EditText.
class
.getName()));
if
(
object
.exists()) {
Runtime.getRuntime().exec(
cmd2
+escape(
content
));
sleep(1000);
object
=
new
UiObject(
new
UiSelector().text(
"发送"
));
object
.click();
sleep(1000);
}
}
/**
* 截图后另存为
*
*
@param
rect
*
@param
path
*/
public
void
cutBitmp(Rect
rect
, String
path
,
int
a
) {
Bitmap
m
= BitmapFactory.decodeFile(
path
);
m
=
m
.createBitmap(
m
,
rect
.
left
,
rect
.
top
,
rect
.width(),
rect
.height());
saveBitMapToSdcard(
m
,
"talk"
+
a
);
}
/**
* 获得全图并从全图中截图
*
*
@param
m
*
@param
newName
*/
public
void
saveBitMapToSdcard(Bitmap
m
, String
newName
) {
FileOutputStream
out
=
null
;
try
{
out
=
new
FileOutputStream(
"/mnt/sdcard/wlk/image/"
+
newName
+
".jpg"
);
if
(
out
!=
null
) {
m
.compress(Bitmap.CompressFormat.
JPEG
, 90,
out
);
out
.close();
}
}
catch
(Exception
e
) {
throw
new
RuntimeException(
e
);
}
}
/**
* 执行ADB命令并获取返回值
*
*
@throws
UnsupportedEncodingException
*/
public
String testcmd(String
cmd
)
throws
UnsupportedEncodingException {
String
coordinate
=
""
;
String
strLine
=
null
;
try
{
// Runtime对象
Runtime
runtime
= Runtime.getRuntime();
// 执行命令,并且获得Process对象
Process
process
=
runtime
.exec(
cmd
);
// 获得结果的输入流
InputStream
input
=
process
.getInputStream();
BufferedReader
br
=
new
BufferedReader(
new
InputStreamReader(
input
));
while
(
null
!= (
strLine
=
br
.readLine())) {
coordinate
+=
strLine
;
}
br
.close();
input
.close();
}
catch
(IOException
e
) {
e
.printStackTrace();
}
return
coordinate
;
}
public
static
String escape(String
s
) {
StringBuffer
sbuf
=
new
StringBuffer();
int
len
=
s
.length();
for
(
int
i
= 0;
i
<
len
;
i
++) {
int
ch
=
s
.charAt(
i
);
if
(
'A'
<=
ch
&&
ch
<=
'Z'
) {
sbuf
.append((
char
)
ch
);
}
else
if
(
'a'
<=
ch
&&
ch
<=
'z'
) {
sbuf
.append((
char
)
ch
);
}
else
if
(
'0'
<=
ch
&&
ch
<=
'9'
) {
sbuf
.append((
char
)
ch
);
}
else
if
(
ch
==
'-'
||
ch
==
'_'
||
ch
==
'.'
||
ch
==
'!'
||
ch
==
'~'
||
ch
==
'*'
||
ch
==
'\''
||
ch
==
'('
||
ch
==
')'
) {
sbuf
.append((
char
)
ch
);
}
else
if
(
ch
<= 0x007F) {
sbuf
.append(
'%'
);
sbuf
.append(
hex
[
ch
]);
}
else
{
sbuf
.append(
'%'
);
sbuf
.append(
'u'
);
sbuf
.append(
hex
[(
ch
>>> 8)]);
sbuf
.append(
hex
[(0x00FF &
ch
)]);
}
}
return
sbuf
.toString();
}
private
final
static
String[]
hex
= {
"00"
,
"01"
,
"02"
,
"03"
,
"04"
,
"05"
,
"06"
,
"07"
,
"08"
,
"09"
,
"0A"
,
"0B"
,
"0C"
,
"0D"
,
"0E"
,
"0F"
,
"10"
,
"11"
,
"12"
,
"13"
,
"14"
,
"15"
,
"16"
,
"17"
,
"18"
,
"19"
,
"1A"
,
"1B"
,
"1C"
,
"1D"
,
"1E"
,
"1F"
,
"20"
,
"21"
,
"22"
,
"23"
,
"24"
,
"25"
,
"26"
,
"27"
,
"28"
,
"29"
,
"2A"
,
"2B"
,
"2C"
,
"2D"
,
"2E"
,
"2F"
,
"30"
,
"31"
,
"32"
,
"33"
,
"34"
,
"35"
,
"36"
,
"37"
,
"38"
,
"39"
,
"3A"
,
"3B"
,
"3C"
,
"3D"
,
"3E"
,
"3F"
,
"40"
,
"41"
,
"42"
,
"43"
,
"44"
,
"45"
,
"46"
,
"47"
,
"48"
,
"49"
,
"4A"
,
"4B"
,
"4C"
,
"4D"
,
"4E"
,
"4F"
,
"50"
,
"51"
,
"52"
,
"53"
,
"54"
,
"55"
,
"56"
,
"57"
,
"58"
,
"59"
,
"5A"
,
"5B"
,
"5C"
,
"5D"
,
"5E"
,
"5F"
,
"60"
,
"61"
,
"62"
,
"63"
,
"64"
,
"65"
,
"66"
,
"67"
,
"68"
,
"69"
,
"6A"
,
"6B"
,
"6C"
,
"6D"
,
"6E"
,
"6F"
,
"70"
,
"71"
,
"72"
,
"73"
,
"74"
,
"75"
,
"76"
,
"77"
,
"78"
,
"79"
,
"7A"
,
"7B"
,
"7C"
,
"7D"
,
"7E"
,
"7F"
,
"80"
,
"81"
,
"82"
,
"83"
,
"84"
,
"85"
,
"86"
,
"87"
,
"88"
,
"89"
,
"8A"
,
"8B"
,
"8C"
,
"8D"
,
"8E"
,
"8F"
,
"90"
,
"91"
,
"92"
,
"93"
,
"94"
,
"95"
,
"96"
,
"97"
,
"98"
,
"99"
,
"9A"
,
"9B"
,
"9C"
,
"9D"
,
"9E"
,
"9F"
,
"A0"
,
"A1"
,
"A2"
,
"A3"
,
"A4"
,
"A5"
,
"A6"
,
"A7"
,
"A8"
,
"A9"
,
"AA"
,
"AB"
,
"AC"
,
"AD"
,
"AE"
,
"AF"
,
"B0"
,
"B1"
,
"B2"
,
"B3"
,
"B4"
,
"B5"
,
"B6"
,
"B7"
,
"B8"
,
"B9"
,
"BA"
,
"BB"
,
"BC"
,
"BD"
,
"BE"
,
"BF"
,
"C0"
,
"C1"
,
"C2"
,
"C3"
,
"C4"
,
"C5"
,
"C6"
,
"C7"
,
"C8"
,
"C9"
,
"CA"
,
"CB"
,
"CC"
,
"CD"
,
"CE"
,
"CF"
,
"D0"
,
"D1"
,
"D2"
,
"D3"
,
"D4"
,
"D5"
,
"D6"
,
"D7"
,
"D8"
,
"D9"
,
"DA"
,
"DB"
,
"DC"
,
"DD"
,
"DE"
,
"DF"
,
"E0"
,
"E1"
,
"E2"
,
"E3"
,
"E4"
,
"E5"
,
"E6"
,
"E7"
,
"E8"
,
"E9"
,
"EA"
,
"EB"
,
"EC"
,
"ED"
,
"EE"
,
"EF"
,
"F0"
,
"F1"
,
"F2"
,
"F3"
,
"F4"
,
"F5"
,
"F6"
,
"F7"
,
"F8"
,
"F9"
,
"FA"
,
"FB"
,
"FC"
,
"FD"
,
"FE"
,
"FF"
};