小米安卓真机ADB对硬件操作

提示词

角色设定 :你是一位精通 Android 系统底层、ADB 协议及 Python uiautomator2 框架的自动化专家。

任务目标 :请为我编写一份功能极其全面的 Python 自动化脚本,旨在全方位展示对安卓设备的控制能力。

核心要求

  1. 代码风格 :采用模块化设计,每个功能块需独立封装,严禁使用已废弃的旧版 API(如 set_location 等),优先使用 d.shell() 执行系统级指令以确保兼容性。

  2. 系统级操作:包含但不限于修改系统设置(亮度、休眠、显示触摸点)、切换飞行模式、清理缓存、获取详细电量信息、读取 CPU 实时频率、列出所有第三方 App 包名。

  3. 硬件级控制:包含但不限于模拟物理按键(音量、电源键长按)、触发硬件震动、强制旋转屏幕方向(横竖屏切换)、调节媒体/闹钟音量。

  4. 软件与交互:通过 Intent 快速直达系统页面(如 WiFi 设置、相册、电池统计页)、模拟剪贴板写入与读取(绕过安全限制)、截取当前屏幕并保存。

  5. 异常处理:代码需包含对常见 RPC 错误的捕获,尤其是在执行高权限 Shell 命令时的反馈处理。

  6. 结果输出:每个操作执行后,必须在 Python 控制台实时打印出系统的反馈结果(标准输出),格式要求美观易读。

环境说明 :设备已连接,IP 为 192.168.2.254:43435,系统环境为 MIUI/高版本安卓。

代码

python 复制代码
import uiautomator2 as u2
import time

# 连接设备
d = u2.connect("192.168.2.254:43435")

def section(title):
    print(f"\n{'='*10} {title} {'='*10}")

# 1. 声音硬件 (物理按键模拟)
section("声音硬件调节")
for _ in range(3):
    d.press("volume_up")
print("音量调节:已模拟物理按键增加音量")

# 2. 摄像头 (调用系统 Activity)
section("摄像头硬件测试")
d.shell("am start -a android.media.action.IMAGE_CAPTURE")
time.sleep(2)
d.screenshot("camera_preview.jpg")
print("摄像头:已拉起预览并截图保存")
d.app_stop("com.android.camera")

# 3. WiFi 连接详细扫描
section("WiFi 硬件扫描")
# 获取附近扫描到的 WiFi 热点
wifi_scan = d.shell("cmd -w wifi list-scan-results | head -n 5").output.strip()
print(f"附近 WiFi 信号:\n{wifi_scan if wifi_scan else '无法直接获取扫描列表'}")

# 4. 地理位置修复 (使用 Shell 指令模拟)
section("地理位置控制 (修复版)")
# 经纬度:116.3975, 39.9087 (北京)
# 注意:前提是在模拟器/手机设置 -> 开发者选项 -> 选择模拟位置应用 中选择了 ATX 或相关服务
try:
    # 尝试通过高级 shell 指令注入位置 (部分模拟器支持)
    d.shell("settings put secure location_mode 3") # 开启高精度定位模式
    print("位置:已尝试通过系统设置开启高精度定位")
    # 如果你安装了某些定位模拟插件,可以通过 am broadcast 发送
    # 这里我们演示通过 settings 注入模拟位置的开关
    d.shell("settings put global allow_mock_location 1")
    print("位置:已开启『允许模拟位置』开关")
except Exception as e:
    print(f"位置模拟由于系统限制失败: {e}")

# 5. 重力与旋转
section("重力感应控制")
d.shell("settings put system user_rotation 1") # 横屏
time.sleep(1)
d.shell("settings put system user_rotation 0") # 竖屏
print("重力感应:横竖屏切换测试完成")

# 6. APP 清单与磁盘瘦身 (针对你 97% 磁盘占用的修复)
section("系统资源管理")
# 列出最近安装的 10 个第三方应用及其路径
app_list = d.shell("pm list packages -3 -f | tail -n 10").output.strip()
print(f"最近第三方 APP 清单:\n{app_list}")

# 针对你磁盘空间不足的警告,执行清理
print("\n正在尝试清理系统冗余缓存以释放空间...")
d.shell("pm trim-caches 10G") 
# 删除所有临时文件
d.shell("rm -rf /sdcard/*.tmp /sdcard/*.log")
print("清理指令执行完毕")

# 7. 相册与媒体库
section("相册硬件访问")
d.shell("am start -a android.intent.action.PICK -t image/*")
time.sleep(2)
d.press("home")
print("相册:已通过 Intent 尝试拉起图片选择器")

print("\n" + "="*35)
print("硬件操控演示 5.0 全部执行完毕")

结果

相关推荐
Mr YiRan7 小时前
网络请求API监控与网络切换埋点
android·网络
美狐美颜sdk10 小时前
直播APP开发技术栈详解:视频美颜SDK、人脸识别与实时渲染
android·人工智能·音视频·美颜sdk·直播美颜sdk
奈斯先生Vector15 小时前
当模型版本不断变化,RelayRouter 能否帮助 AI 应用摆脱深度绑定
android·java·人工智能·开源·aigc
TimeFine16 小时前
让强模型做“总工”,让高性价比模型写代码
android
又见情义17 小时前
RK3568 Android 13 屏蔽 healthd 电池日志经验分享
android
古法安卓20 小时前
Android-Fork 机制详解
android·java·android studio
Android打工仔20 小时前
不要在 Data 层随意把 Cold Flow 转换成 Hot Flow
android·架构·kotlin
峥嵘life21 小时前
2026免费的 opencode 使用分享:Windows端 + 服务器CLI 实战总结
android·大数据·开发语言
杉氧21 小时前
拒绝重复造轮子:我写了一个生产级的 Kotlin 协程与 Flow 工具库(CoroutineKit)
android·kotlin·workflow
恋猫de小郭1 天前
Flutter GSoC 2026 提案进度解读,补上 DevTools、FFI 和原生平台的关键缺口
android·前端·flutter