SimpleDemo 是随 M20_AndroidSDK 一同交付的示例 App,展示了 SDK 的核心能力,可作为二次开发的代码基底。主要功能包括:
- 机器人连接:UDP 连接建立、断开与心跳检测
- 状态监控:实时显示运动模式、电量、姿态、位置等状态
- 摇杆遥控:虚拟摇杆界面,实时发送轴指令
- 模式切换:一键切换机器人运动模式(站立、行走、趴下等)
- 急停按钮:一键触发紧急停止
- 虚拟摇杆:通过屏幕虚拟摇杆发送轴指令(SimpleDemo 不集成 ControllerSDK,手柄需自行接入)
- 异常处理:连接异常、机器人错误码提示
- 生命周期管理:Activity 生命周期中的连接状态维护
- Android Studio 最新稳定版
- JDK 17+
- 山猫 M20 机器人(与开发设备在同一局域网)
在 Android Studio 中打开项目根目录,Gradle 会自动同步。
./gradlew :SimpleDemo:assembleDebug或直接点击 Android Studio 的 Run 按钮。
在 App 设置页面或 Application 类中修改机器人 IP 地址,确保与机器人处于同一局域网。
连接真机或模拟器,运行 SimpleDemo。
App 启动后自动发起连接,通过 RobotStatesManager.robotConnectStatus 观察连接状态。
- 查看状态监控页面是否显示实时数据
- 使用虚拟摇杆控制机器人运动
- 切换运动模式、急停等功能是否正常
SimpleDemo/
├── app/ # 主 App 模块
│ ├── src/main/java/ # 源码
│ │ ├── application/ # MyApplication:SDK 初始化
│ │ ├── ui/ # UI 层
│ │ │ ├── main/ # 主页 Activity + 状态监控
│ │ │ ├── joystick/ # 虚拟摇杆界面
│ │ │ ├── settings/ # 设置页面
│ │ │ └── widget/ # 自定义 View
│ │ ├── viewmodel/ # ViewModel 封装
│ │ └── utils/ # 工具类
│ ├── src/main/res/ # 资源文件
│ └── src/main/AndroidManifest.xml
├── build.gradle
└── proguard-rules.pro
| 文件 | 职责 |
|---|---|
MyApplication |
SDK 初始化、连接管理 |
MainActivity |
主页 Activity,状态监控入口 |
JoystickFragment |
虚拟摇杆 UI,通过 axisDataProvider 提供 AxisData |
RobotViewModel |
封装 LiveData 观察,UI 数据源 |
SettingsActivity |
机器人 IP 等配置 |
UI 操作(摇杆/按钮)
↓
RobotViewModel
↓
RobotSdkManager.axisDataProvider / sendCustomMessage
↓
IRobotConnection(UDP)
↓
机器人本体
↓
响应回包 → ProtocolConverter → RobotStatesManager(LiveData)
↓
UI 更新(LiveData.observe)
| 场景 | 修改位置 | 说明 |
|---|---|---|
| 修改机器人 IP 配置方式 | MyApplication / SettingsActivity |
改为从网络配置或服务器获取 |
| 自定义 UI 主题 | res/values/themes.xml |
修改颜色、字体、布局 |
| 新增状态显示面板 | 新增 Fragment + ViewModel | 监听新的 LiveData 维度 |
| 接入实体手柄 | 参考 controller-sdk-integration.md |
初始化 ControllerManager |
| 上装设备控制(机械臂/云台) | 独立模块实现 | 上装通信(Socket、协议编解码等)需根据设备厂家文档自行实现,不通过 RobotSdkManager |
| 多页面导航 | 增加导航组件 | 使用 Jetpack Navigation 或自定义路由 |
| 持久化配置 | 新增 SharedPreferences 封装 |
保存机器人 IP、用户偏好等 |
| 错误提示优化 | RobotViewModel + UI |
将错误码映射为友好的中文提示 |
| 日志记录 | 全局异常捕获 + 日志框架 | 接入 Timber 或自建日志系统 |
| 多语言支持 | res/values-*/strings.xml |
增加多语言字符串资源 |
本项目采用 Apache License 2.0 开源。