使用MuMuManger阻塞重启mumu

This commit is contained in:
Elaina 2024-12-04 22:24:21 +08:00
parent 6da80a42ff
commit 6222d7ac2a
2 changed files with 57 additions and 0 deletions

View file

@ -5,6 +5,7 @@ from enum import Enum
from mower import __system__ from mower import __system__
from mower.utils import config from mower.utils import config
from mower.utils.csleep import MowerExit, csleep from mower.utils.csleep import MowerExit, csleep
from mower.utils.device.method.mumumanager import MuMuManager
from mower.utils.log import logger from mower.utils.log import logger
@ -126,6 +127,14 @@ def exec_cmd(cmd, folder_path, wait_time):
raise raise
except subprocess.TimeoutExpired: except subprocess.TimeoutExpired:
wait_time -= 1 wait_time -= 1
elif config.conf.emulator.name == Emulator_Type.MuMu12.value:
start_time = datetime.now()
while (datetime.now() - start_time).total_seconds() < wait_time:
if MuMuManager().check_android_process():
csleep(5) # adb不一定能完全连
return True
csleep(1)
else: else:
start_time = datetime.now() start_time = datetime.now()
while (datetime.now() - start_time).total_seconds() < wait_time: while (datetime.now() - start_time).total_seconds() < wait_time:

View file

@ -0,0 +1,48 @@
import json
from mower.utils import config
from mower.utils.log import logger
from .utils import subprocess_run
class MuMuManager:
manager_path = config.conf.emulator.emulator_folder + "\\MuMuManager.exe"
index = config.conf.emulator.index
def get_emulator_info(self):
command = [self.manager_path, "info", "-v", str(self.index)]
output = subprocess_run(command)
try:
data = json.loads(output)
return data
except json.JSONDecodeError as e:
logger.error(f"JSON 解析失败: {e}")
return {}
def get_field_value(self, field_name):
"""
从模拟器信息中提取指定字段的值
Args:
field_name (str): 字段名称
Returns:
str, int, bool, or None: 字段: 字段值或错误消息
"""
# 获取模拟器信息
data = self.get_emulator_info()
if not data:
logger.error("未能获取数据")
return
# 提取指定字段的值
value = data.get(field_name, None)
if value is None:
logger.error(f"字段 '{field_name}' 不存在")
return
return value
def check_android_process(self) -> bool:
return self.get_field_value("is_android_started")