近期受控于手机没电充电频繁的影响下产生了以下内容,内容很简陋但是能实现需求。
实现了通过 ADB 与 Wi-Fi 相结合的方式来便捷地连接手机,并对手机的断电充电操作进行有效的控制。
在这一过程中,充分利用了 ADB 强大的调试功能和 Wi-Fi 稳定的连接特性,能够更加灵活、自由地管理手机的充电状态。无论是在家庭、办公还是其他场所,只要手机与控制设备处于同一 Wi-Fi 网络环境下,即可轻松实现对手机充电的精准控制,极大地提升了用户体验,为手机充电管理带来了全新的解决方案
import subprocess
import time
# 定时查询的时间间隔(秒)
interval = 60 * 60 * 60 # 例如,每分钟查询一次
# 定义存储devices
devices = []
# 存储每台手机的充电状态标志
phone_charged_status = {}
# 获取有多少个手机连接到电脑
def get_connected_phone_count():
"""
使用 ADB 获取连接到电脑的手机数量
"""
result = subprocess.run(['adb', 'devices'], capture_output=True, text=True)
if result.returncode != 0:
print("获取连接的设备失败")
return None
output = result.stdout.split('\n')[1].split('\t')[0]
devices.append(output)
return devices
# 获取手机电量
def get_battery_level(phone_id):
"""
使用 ADB 获取手机电量
"""
result = subprocess.run(['adb', '-s', f'{phone_id}', 'shell', 'dumpsys', 'battery'], capture_output=True, text=True)
if result.returncode != 0:
print("获取电量失败")
return None
output = result.stdout
# 从输出中提取电量信息
for line in output.split('\n'):
if 'level' in line:
return int(line.split(':')[1].strip())
return None
# 开始充电
def enable_charging(phone_id):
"""
允许手机充电
"""
subprocess.run(['adb', '-s', f'{phone_id}', 'shell', 'dumpsys', 'battery', 'set', 'status', '2'])
# 停止充电
def disable_charging(phone_id):
"""
停止手机充电
"""
subprocess.run(['adb', '-s', f'{phone_id}', 'shell', 'dumpsys', 'battery', 'set', 'status', '1'])
# 获取连接到电脑的手机数量
connected_phone_count = get_connected_phone_count()
# 初始化手机充电状态
for i in connected_phone_count:
phone_charged_status[i] = False # 初始化为 False
if __name__ == '__main__':
while True:
for phone_id in connected_phone_count:
battery_level = get_battery_level(phone_id)
if battery_level is not None:
if battery_level == 100 and not phone_charged_status[phone_id]:
print(f"手机 {phone_id} 电量已充满,停止充电...")
# 调用停止充电的函数
disable_charging(phone_id)
phone_charged_status[phone_id] = True
elif battery_level <= 10:
print(f"手机 {phone_id} 电量未满,继续充电...")
# 调用继续充电的函数
enable_charging(phone_id)
phone_charged_status[phone_id] = False
else:
print(f"手机 {phone_id} 当前电量:{battery_level}%")
time.sleep(interval)
只实现了基础的断电充电操作,其他的内容就需要考各位自己进行努力了,┏(^0^)┛