【脚本】ADB调用摄像头拍照并处理图片
431 字
2 分钟
【脚本】ADB调用摄像头拍照并处理图片

需安装:jpegoptim
#!/bin/bash
# 预处理目录pre_dir=/mnt/sda/cam/pre# 最终保存目录dir=/mnt/sda/cam
mkdir $pre_dir 2&>1 > /dev/nullmkdir $dir 2&>1 > /dev/null
# 【可选】上报电池信息,用于自动化充电# adb shell dumpsys battery | grep -E 'level|AC' |# sed ':a;N;s/\n/,/g;ta' - |# sed 's/AC powered/AC/g' - |# sed 's/ //g' - |# sed 's/,/,"/g' - |# sed 's/:/":/g' - |# sed 's/^|&/"/g' - |# sed 's/^/{"/g' - |# sed 's/$/}/g' - |# xargs -I value -o mosquitto_pub -t 'phone/battery/level' -h 192.168.31.110 -p 9883 -m 'value'
adb shell input keyevent 26sleep 0.5adb shell am start -a android.media.action.STILL_IMAGE_CAMERAsleep 0.5adb shell input tap 539 900sleep 1adb shell input keyevent 27sleep 1adb shell input keyevent 4adb shell input keyevent 26
adb shell find /sdcard/DCIM/Camera -name "*.jpg" | xargs -o -I path adb pull path $pre_diradb shell rm /sdcard/DCIM/Camera/*
# 【可选】压缩图片,修改size可控制图片大小find $pre_dir -name "*.jpg" | xargs jpegoptim --size=500k
mv $pre_dir/* $dirpython3版本:
添加了对屏幕是否亮屏的检测
#!/bin/python3
import osimport reimport jsonimport timeadb_id = '192.168.31.129:5555'pre_dir = '/mnt/sda/cam/pre/'dir = '/mnt/sda/cam/'
try: os.mkdir(dir)except: passtry: os.mkdir(pre_dir)except: pass
def cmd(command, display=True): if display: print(command) out = os.popen(command).read() if display: print(out) return out
def adb(shell, display=True): if not shell.startswith('adb'): shell = 'adb %s' % (shell) return cmd(shell.replace('adb', 'adb -s %s' % (adb_id)), display)
def is_screenState(): return True if 'state=ON' in adb('shell dumpsys power | grep "Display Power: state="') else False
def open_screen(): if not is_screenState(): adb('shell input keyevent 26')
def close_screen(): if is_screenState(): adb('shell input keyevent 26')
# 发送电量数据
def send_power_status(): info = adb('shell dumpsys battery', False) ac = True if re.compile( r'AC powered: ([^\n]+)').findall(info)[0] == 'true' else False level = int(re.compile(r'level: ([0-9]+)').findall(info)[0]) j = json.dumps({"level": level, "AC": ac}) os.popen( 'mosquitto_pub -t \'phone/oppo/battery\' -h 192.168.31.110 -p 9883 -m \'%s\'' % (j))
send_power_status()open_screen()adb('shell am start -a android.media.action.STILL_IMAGE_CAMERA')time.sleep(0.5)adb('shell input tap 539 900')time.sleep(1)adb('shell input keyevent 27')time.sleep(1)adb('shell input keyevent 4')close_screen()
for path in adb('adb shell find /sdcard/DCIM/Camera -name "*.jpg"').split('\n'): if path == '': continue adb('adb pull %s %s' % (path, pre_dir))adb('adb shell rm /sdcard/DCIM/Camera/*')for path in cmd('find %s -name "*.jpg"' % (pre_dir)).split('\n'): if path == '': continue cmd('jpegoptim --size=250k %s' % (path))cmd('mv %s/* %s' % (pre_dir, dir))支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
【Linux】使用iptables进行端口映射
Linux笔记2023-04-21
2
用AndroidStudio编写.so
Java笔记2018-05-07
3
【脚本】docker日志清理
Linux笔记2023-01-05
4
AndroidStudio NDK开发环境搭建
Java笔记2018-05-07
5
【Linux】文件备份脚本
Linux笔记2022-10-26
随机文章随机推荐















加载更多…