以下代码通过GPT3.5生成
#!/bin/bash
# 点击次数范围
CLICK_COUNT_MIN=20
CLICK_COUNT_MAX=30
# 每次点击间隔范围
CLICK_INTERVAL_MIN=3000
CLICK_INTERVAL_MAX=5000
# 暂停时间范围
PAUSE_INTERVAL_MIN=10000
PAUSE_INTERVAL_MAX=20000
# 总运行时间
RUN_TIME=3600
# 获取屏幕分辨率
SCREEN_WIDTH=$(adb shell wm size | awk -F' ' '{print $3}' | awk -F'x' '{print $1}')
SCREEN_HEIGHT=$(adb shell wm size | awk -F' ' '{print $3}' | awk -F'x' '{print $2}')
# 计算每次点击间隔时间
get_click_interval() {
local count=$1
echo $((60 * 1000 / count))
}
# 生成随机数
get_random_int() {
local min=$1
local max=$2
echo $(expr $min + $RANDOM % $(expr $max - $min + 1))
}
# 模拟屏幕点击
simulate_click() {
local x=$(get_random_int 0 $[$SCREEN_WIDTH-200])
local y=$(get_random_int 600 $[$SCREEN_HEIGHT-800])
echo $x
echo $y
# 这里是核心,通过连续多次tap来模拟双击,否则不会被识别为双击
adb shell "seq 2 | while read i;do input tap $x $y & input tap $x $y & sleep 0.02;done"
}
# 主循环
main_loop() {
local start_time=$(date +%s)
while true; do
# 计算随机点击次数
local click_count=$(get_random_int $CLICK_COUNT_MIN $CLICK_COUNT_MAX)
local click_interval=$(get_click_interval $click_count)
# 模拟点击
for ((i = 0; i < $click_count; i++)); do
simulate_click
sleep $(expr $click_interval / 1000)
done
# 随机暂停
local pause_interval=$(get_random_int $PAUSE_INTERVAL_MIN $PAUSE_INTERVAL_MAX)
sleep $(expr $pause_interval / 1000)
# 判断是否超时
local now=$(date +%s)
local elapsed_time=$(expr $now - $start_time)
if [ $elapsed_time -ge $RUN_TIME ]; then
break
fi
# 每3分钟输出一次状态
if [ $(expr $elapsed_time % 180) -eq 0 ]; then
echo "Elapsed time: $(expr $elapsed_time / 60) min"
fi
done
}
# 开始运行
main_loop