Files
opendance-android/tasks/006-connect-ui.md
T
opendance 68783c37b6 docs: 消除 Gitea 模棱两可 Unicode 告警(全角标点紧邻 ASCII 时改为半角)
依据 Gitea v1.27.3 modules/charset/escape_stream.go 的判定规则
(analyzeDetectResults:仅当左右相邻字符都不是非 ASCII 时才标记,
且 _common 表恒定生效),把说明文档中会被标记的全角标点
(,:;?!() 等)改为半角,并保证成对括号宽度一致。
中文语境中的全角标点(左右均为中文)保持原样,不动代码与契约语义。
2026-09-15 21:45:51 +08:00

48 lines
1.3 KiB
Markdown

# T-AND-006 连接页 + 主机发现
- **状态**: done
- **依赖**: T-AND-005
## 目标
让用户快速找到并连上 Windows 客户端,无需手输 IP。
## load
```
DSH.md
app/src/main/java/com/opendance/studio/ui/ConnectScreen.kt
app/src/main/java/com/opendance/studio/net/HostDiscovery.kt
```
## 交付物
- `ui/ConnectScreen.kt`:地址输入、扫描、测试连接、推流参数
- `net/HostDiscovery.kt`:局域网扫描
## 主机发现策略
Windows 客户端是**裸 WebSocket 服务端**(不是 HTTP 服务),无法靠扫描
HTTP 端点发现。因此:
1. 取手机在 WiFi 网的 IPv4 地址(排除 `rmnet*` 蜂窝网卡与 `169.254.*` 链路本地地址)
2. 推导 `/24` 网段
3. 并发 TCP 探测 `<局域网网段>.1-254:8765`(并发 32、单机超时 300ms)
4. 以 `Flow` 形式边扫边产出,按延迟升序展示--最快响应的最可能是目标机
整段扫描约 2~3 秒。
## 可配置项
| 项 | 说明 |
|--|--|
| IP / 端口 | 默认 8765,与契约一致 |
| 分辨率 | 480x360 / 640x480 / 1280x720 |
| 目标帧率 | 写入 hello 的 targetFps |
| 镜像画面 | 写入 flags.bit0 |
| 仅上半身模式 | 写入 flags.bit2 |
## 验收
`assembleDebug` 通过;连接页可编辑参数并持久化(SharedPreferences)。