167 lines
4.0 KiB
Markdown
167 lines
4.0 KiB
Markdown
# padsleep_adb
|
||
|
||
基于树莓派,通过 ADB 控制安卓平板自动亮屏和息屏的守护程序。
|
||
|
||
## 功能特性
|
||
|
||
- **定时控制**:根据配置的时间段自动亮屏/息屏
|
||
- **超时保护**:屏幕亮起超过设定时长且不在亮屏时间段内 → 自动息屏
|
||
- **无线 ADB**:支持通过 TCP/IP 连接安卓设备(无线调试)
|
||
- **TUI 管理**:提供终端界面工具,方便查看状态和修改配置
|
||
- **IPC 通信**:通过 Unix Socket 与 TUI 工具通信
|
||
- **自动重连**:无线连接断开后自动尝试重新连接
|
||
|
||
## 系统要求
|
||
|
||
- 树莓派(或其他 Linux 设备)
|
||
- Python 3.10+
|
||
- ADB (Android Debug Bridge)
|
||
- 安卓平板(已开启 USB 调试或无线调试)
|
||
|
||
## 安装
|
||
|
||
### 1. 安装系统依赖
|
||
|
||
```bash
|
||
# Debian/Ubuntu
|
||
sudo apt update
|
||
sudo apt install adb python3-curses
|
||
|
||
# 树莓派 OS
|
||
sudo apt install adb
|
||
```
|
||
|
||
### 2. 安装 Python 依赖
|
||
|
||
```bash
|
||
cd padsleep_adb
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
依赖列表:
|
||
- `adbutils>=2.12.0` — Python ADB 库
|
||
|
||
## 使用方法
|
||
|
||
### 启动守护程序
|
||
|
||
```bash
|
||
python padsleep.py
|
||
```
|
||
|
||
守护程序会自动:
|
||
1. 加载配置文件 `config.json`
|
||
2. 检测 ADB 设备
|
||
3. 启动 IPC 服务(`/tmp/padsleep.sock`)
|
||
4. 进入主循环,定期检查屏幕状态
|
||
|
||
### 启动 TUI 管理工具
|
||
|
||
```bash
|
||
# 新终端窗口
|
||
python padsleep_tui.py
|
||
```
|
||
|
||
TUI 快捷键:
|
||
|
||
| 按键 | 功能 |
|
||
|------|------|
|
||
| `↑/k` `↓/j` | 选择亮屏时间段 |
|
||
| `A` | 新增亮屏时间段 |
|
||
| `E` | 编辑选中时间段 |
|
||
| `D` | 删除选中时间段 |
|
||
| `S` | 选择 ADB 设备 |
|
||
| `W` | 无线连接设备 |
|
||
| `R` | 刷新状态 |
|
||
| `L` | 重载守护进程配置 |
|
||
| `F` | 强制息屏 |
|
||
| `N` | 强制亮屏 |
|
||
| `T` | 重新连接守护进程 |
|
||
| `H` | 显示帮助 |
|
||
| `Q` | 退出 |
|
||
|
||
## 配置说明
|
||
|
||
配置文件 `config.json` 示例:
|
||
|
||
```json
|
||
{
|
||
"screen_on_periods": [
|
||
{"start": "08:00", "end": "22:00"}
|
||
],
|
||
"check_interval_seconds": 30,
|
||
"auto_sleep_delay_minutes": 5,
|
||
"adb_device_serial": "",
|
||
"adb_wireless_host": "",
|
||
"adb_wireless_port": 5555,
|
||
"adb_wireless_auto_connect": false
|
||
}
|
||
```
|
||
|
||
### 字段说明
|
||
|
||
| 字段 | 类型 | 默认值 | 说明 |
|
||
|------|------|--------|------|
|
||
| `screen_on_periods` | array | `[{"start":"08:00","end":"22:00"}]` | 亮屏时间段列表,支持跨天(如 22:00~08:00) |
|
||
| `check_interval_seconds` | int | `30` | 检查间隔(秒) |
|
||
| `auto_sleep_delay_minutes` | int | `5` | 非亮屏时段屏幕亮起多久后自动息屏(分钟) |
|
||
| `adb_device_serial` | string | `""` | 指定 USB 设备 serial,空表示自动选择第一个 |
|
||
| `adb_wireless_host` | string | `""` | 无线设备 IP 地址,空表示不使用无线连接 |
|
||
| `adb_wireless_port` | int | `5555` | 无线设备端口 |
|
||
| `adb_wireless_auto_connect` | bool | `false` | 启动时是否自动连接无线设备 |
|
||
|
||
## 无线 ADB 连接
|
||
|
||
### 方式一:配置文件预设
|
||
|
||
在 `config.json` 中设置:
|
||
|
||
```json
|
||
{
|
||
"adb_wireless_host": "192.168.1.100",
|
||
"adb_wireless_port": 5555,
|
||
"adb_wireless_auto_connect": true
|
||
}
|
||
```
|
||
|
||
### 方式二:TUI 手动连接
|
||
|
||
1. 启动 TUI 工具
|
||
2. 按 `W` 键
|
||
3. 输入 IP 地址和端口
|
||
4. 确认连接
|
||
|
||
### 开启安卓设备无线调试
|
||
|
||
1. 连接 USB,执行 `adb tcpip 5555`
|
||
2. 或在设备上:设置 → 开发者选项 → 无线调试 → 开启
|
||
|
||
### 连接优先级
|
||
|
||
程序采用 **USB 优先** 策略:
|
||
1. 首先尝试 USB 连接
|
||
2. 如果 USB 不可用且配置了无线,尝试无线连接
|
||
3. 无线连接断开后自动重连(最多 3 次)
|
||
|
||
## 文件结构
|
||
|
||
```
|
||
padsleep_adb/
|
||
├── padsleep.py # 守护程序主程序
|
||
├── padsleep_tui.py # TUI 管理工具
|
||
├── config.json # 配置文件(首次运行自动生成)
|
||
├── requirements.txt # Python 依赖
|
||
└── README.md # 本文档
|
||
```
|
||
|
||
## 开发说明
|
||
|
||
- 在 Windows 上开发,在树莓派上运行
|
||
- 使用 `adbutils` 库与 ADB Server 通信
|
||
- IPC 使用 Unix Socket + JSON 行协议
|
||
- TUI 使用 Python `curses` 库
|
||
|
||
## 许可证
|
||
|
||
MIT License
|