47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
"""跨模块共享工具(web 层)。"""
|
||
from core import device_pool
|
||
from core.adb_helper import _adb
|
||
from core.logger import get_logger
|
||
|
||
_log = get_logger("web")
|
||
|
||
|
||
def _merged_device_list():
|
||
"""本地 adb(含 USB)+ 设备池的合并列表([{serial, state}])。
|
||
|
||
供维护终端/剪贴板注入/应用版本管理等设备选择场景共用。
|
||
状态:device/offline=本机 adb 实际状态;pool=设备池已配置但本机未连接。
|
||
"""
|
||
states = {}
|
||
out = _adb("devices")
|
||
for line in (out or "").splitlines()[1:]:
|
||
parts = line.split()
|
||
if len(parts) >= 2 and parts[0] and not parts[0].startswith("*"):
|
||
states[parts[0]] = parts[1]
|
||
try:
|
||
for serial in device_pool.list_configured():
|
||
if serial not in states:
|
||
states[serial] = "pool"
|
||
except Exception:
|
||
pass
|
||
return [{"serial": s, "state": st} for s, st in sorted(states.items())]
|
||
|
||
|
||
def _device_screen_state(serial):
|
||
"""设备屏幕状态:on/off/unknown(dumpsys power 只读查询)。
|
||
|
||
用 mWakefulness 判断(Asleep=熄屏):MIUI 的 dumpsys display 没有
|
||
mScreenState 字段,power 字段全机型存在。USB 设备查询失败返回 unknown。
|
||
"""
|
||
try:
|
||
if ":" not in serial:
|
||
return "unknown"
|
||
out = _adb("-s", serial, "shell", "dumpsys", "power") or ""
|
||
import re
|
||
m = re.search(r"mWakefulness=(\w+)", out)
|
||
if m:
|
||
return "off" if m.group(1).lower() == "asleep" else "on"
|
||
except Exception:
|
||
pass
|
||
return "unknown"
|