meshtastic/ATAK-Plugin
GitHub: meshtastic/ATAK-Plugin
Meshtastic ATAK 插件,实现 ATAK 与 Meshtastic 网状网络的集成,支持战术通信。
Stars: 493 | Forks: 68
# Meshtastic ATAK 插件
官方 Meshtastic ATAK 插件,用于将目标坐标(CoT)事件发送到 Meshtastic Android 应用中的 IMeshService。
## 概述
Meshtastic ATAK 插件实现了 Android 团队意识套件(ATAK)与 Meshtastic 网状网络设备之间的无缝集成。此插件允许战术团队通过 Meshtastic 的长距离、低功耗网状网络共享位置位置信息(PLI)、聊天消息和其他 CoT 事件。
## 功能
### 核心功能
- **位置位置信息(PLI)** - 通过 Meshtastic 在 ATAK 设备之间共享实时位置数据
- **聊天集成** - 通过网状网络发送和接收 GeoChat 消息
- **文件传输** - 使用喷泉码编码(需要 Short_Turbo 调制解调器预设)传输任务包和文件
- **语音备忘录** - 录制语音到文本消息并通过 Meshtastic 广播
- **外部 GPS 支持** - 将 Meshtastic 设备的 GPS 作为 ATAK 的外部 GPS 源
- **服务器中继** - 在 Meshtastic 网状网络和 TAK 服务器之间转发 CoT 事件
### 架构改进(v1.1.15+)
插件已重构以提高可维护性和性能:
- 模块化架构,关注点分离
- 中心化服务管理
- 改进的错误处理和日志记录
- 喷泉码编码,用于在有损网络上可靠地传输大量数据
- 线程安全的单例模式,用于共享资源
## 安装
1. 从 [Google Play](https://play.google.com/store/apps/details?id=com.geeksville.mesh) 安装 Meshtastic Android 应用
2. 从 [tak.gov](https://tak.gov) 安装 ATAK-CIV
3. 从 [Releases](https://github.com/meshtastic/ATAK-Plugin/releases) 下载最新的 Meshtastic ATAK 插件 APK
4. 在您的 Android 设备上安装插件 APK
5. 启动 ATAK 并从插件菜单加载 Meshtastic 插件
## 配置
### 插件设置
通过:**设置 → 工具首选项 → 特定工具首选项 → Meshtastic 首选项** 访问插件设置
#### 网状设置
- **Meshtastic 通道索引** - 选择用于 ATAK 流量的 Meshtastic 通道(0-7,默认:0)
- **按通道索引过滤** - 仅接收来自指定通道的消息(默认:关闭)
- **跳数限制** - 出站消息的最大跳数(1-7,默认:3)
- **请求确认** - 请求交付确认,增加通道使用(默认:关闭)
#### PLI & 报告
- **限制 PLI 报告速率** - 减少 PLI 频率以节省网状带宽(默认:开启)
- **PLI 报告间隔** - 发送位置更新的频率(30 秒到 30 分钟,默认:5 分钟)
- **仅发送 PLI 和聊天** - 使用优化的 protobuf 格式,建议用于 Meshtastic(默认:关闭)
- **发送读取/交付收据** - 为聊天消息发送交付和读取收据(默认:开启)
#### 显示设置
- **显示 Meshtastic 设备** - 在地图上显示所有 Meshtastic 节点作为标记(默认:开启)
- **隐藏无 GPS 的设备** - 不显示报告 0,0 坐标的节点(默认:关闭)
- **隐藏本地节点** - 不在地图上显示您自己的 Meshtastic 设备(默认:关闭)
#### 服务器中继
- **转发到服务器** - 将 Meshtastic 的消息转发到连接的 TAK 服务器(默认:关闭)
- **从服务器转发** - 从 TAK 服务器转发 PLI 和聊天到 Meshtastic(默认:关闭)
#### 文件传输
- **启用文件传输** - 允许通过 Meshtastic 发送文件,需要 Short_Turbo 预设,最大 56KB(默认:关闭)
#### 音频 & 语音
- **文本到语音** - 大声朗读传入的 Meshtastic 文本消息(默认:关闭)
- **PTT 键码** - 语音备忘录录音的硬件按钮代码(默认:79)
#### GPS 设置
- **使用 Meshtastic GPS** - 使用 Meshtastic 设备 GPS 作为 ATAK 的外部 GPS 源(默认:关闭)
#### 加密
- **启用额外加密** - 使用 AES-256-GCM 和 PSK 加密所有出站消息(默认:关闭)
- **加密 PSK** - 加密的前共享密钥,所有用户必须具有相同的密钥
## 将 Meshtastic 作为外部 GPS 使用
要将您的 Meshtastic 设备作为 ATAK 的 GPS 源使用:
### 要求
- 带有 GPS 接收器的 Meshtastic 设备(例如,LILYGO T-Beam)
- 在 Meshtastic 设备上启用并配置 GPS
- 在 Meshtastic 设置中配置位置数据包
### ATAK 配置
1. 导航到 **设置 → 调令和设备首选项 → 设备首选项 → GPS 首选项**
2. 将 **GPS 选项** 设置为 "忽略内部 GPS / 仅使用外部或网络 GPS"
3. 在插件设置中启用 **使用 Meshtastic GPS**
4. 禁用 **显示 Meshtastic 设备** 以避免重复标记
## 语音备忘录功能
语音备忘录工具允许免提消息传输:
1. 通过 **Meshtastic 插件工具菜单 → 语音备忘录** 访问
2. 按住配置的 PTT 按钮进行录音
3. 释放以将语音转换为文本并传输
4. 启用 TTS 的接收者将听到消息
**注意:** 目前仅支持英语,由 Vosk 语音识别库提供支持。
## 技术细节
### 架构组件
#### 核心服务
- **MeshServiceManager** - 处理与 Meshtastic Android 应用的连接和通信
- **CotEventProcessor** - 处理和转换 CoT 和 Meshtastic 格式
- **FountainChunkManager** - 管理喷泉码编码以进行大量数据传输
- **NotificationHelper** - 处理用户通知以进行文件传输
#### 数据流
1. ATAK 的 CoT 事件被插件拦截
2. 事件被处理并转换为 Meshtastic protobuf 格式
3. 大消息(>231 字节)使用喷泉码(LT 码)编码
4. 数据包通过 IMeshService 发送到连接的 Meshtastic 设备
5. 接收到的 Meshtastic 数据包被转换回 CoT 格式
6. CoT 事件被注入到 ATAK 的事件调度器中
### 支持的消息类型
- 位置位置信息(PLI)
- GeoChat 消息(所有聊天室和直接消息)
- Meshtastic 节点的传感器数据
- 通用 CoT 事件(使用 EXI 压缩)
### 性能优化
- 喷泉码编码,用于在有损网络上可靠地传输大量有效载荷
- EXI 压缩,用于通用 CoT 事件
- 优化的 protobuf,用于 PLI 和聊天消息
- 可配置的跳数限制,用于网络范围控制
## 从源代码构建
### 要求
- Android Studio Arctic Fox 或更高版本
- Android SDK 33
- Android NDK
- ATAK SDK(CIV 或 MIL)
### 构建步骤
```
# 克隆仓库
git clone --recurse-submodules https://github.com/meshtastic/ATAK-Plugin.git
cd ATAK-Plugin
# 配置 local.properties 文件中的 SDK 路径和签名密钥
cp local.properties.example local.properties
# 使用您的配置编辑 local.properties 文件
# 构建插件
./gradlew assembleCivDebug
# 输出 APK 将位于 app/build/outputs/apk/
```
## 视频教程
要全面了解功能和设置,请观看我们的 [视频教程](https://www.youtube.com/watch?v=7cn4ofiSd0A).
## 故障排除
### 常见问题
**插件无法连接到 Meshtastic:**
- 确保已安装并运行 Meshtastic 应用
- 检查 Meshtastic 设备是否已配对并连接
- 验证插件具有必要的权限
**消息无法接收:**
- 确认设备之间的通道设置匹配
- 检查跳数限制是否足够用于您的网络
- 验证节点是否在无线电范围内
**GPS 无法工作:**
- 确保Meshtastic 设备已获得 GPS 定位
- 验证位置数据包已在 Meshtastic 中启用
- 检查 ATAK GPS 设置是否已配置为外部 GPS
## 贡献
欢迎贡献!请:
1. 分叉存储库
2. 创建功能分支
3. 进行更改
4. 提交拉取请求
有关详细指南,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md).
## 支持
- **问题:** [GitHub 问题](https://github.com/meshtastic/ATAK-Plugin/issues)
- **讨论:** [Meshtastic Discord](https://discord.gg/meshtastic)
- **文档:** [Meshtastic 文档](https://meshtastic.org)
## 许可证
有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
## 致谢
- TAK.gov 的 ATAK 开发团队
- Meshtastic 社区和贡献者
- Vosk 语音识别库
- EXIficient 压缩库
## 版本历史
有关版本历史和发布说明,请参阅 [CHANGELOG.md](CHANGELOG.md).
## 配置
### 插件设置
通过:**设置 → 工具首选项 → 特定工具首选项 → Meshtastic 首选项** 访问插件设置
#### 网状设置
- **Meshtastic 通道索引** - 选择用于 ATAK 流量的 Meshtastic 通道(0-7,默认:0)
- **按通道索引过滤** - 仅接收来自指定通道的消息(默认:关闭)
- **跳数限制** - 出站消息的最大跳数(1-7,默认:3)
- **请求确认** - 请求交付确认,增加通道使用(默认:关闭)
#### PLI & 报告
- **限制 PLI 报告速率** - 减少 PLI 频率以节省网状带宽(默认:开启)
- **PLI 报告间隔** - 发送位置更新的频率(30 秒到 30 分钟,默认:5 分钟)
- **仅发送 PLI 和聊天** - 使用优化的 protobuf 格式,建议用于 Meshtastic(默认:关闭)
- **发送读取/交付收据** - 为聊天消息发送交付和读取收据(默认:开启)
#### 显示设置
- **显示 Meshtastic 设备** - 在地图上显示所有 Meshtastic 节点作为标记(默认:开启)
- **隐藏无 GPS 的设备** - 不显示报告 0,0 坐标的节点(默认:关闭)
- **隐藏本地节点** - 不在地图上显示您自己的 Meshtastic 设备(默认:关闭)
#### 服务器中继
- **转发到服务器** - 将 Meshtastic 的消息转发到连接的 TAK 服务器(默认:关闭)
- **从服务器转发** - 从 TAK 服务器转发 PLI 和聊天到 Meshtastic(默认:关闭)
#### 文件传输
- **启用文件传输** - 允许通过 Meshtastic 发送文件,需要 Short_Turbo 预设,最大 56KB(默认:关闭)
#### 音频 & 语音
- **文本到语音** - 大声朗读传入的 Meshtastic 文本消息(默认:关闭)
- **PTT 键码** - 语音备忘录录音的硬件按钮代码(默认:79)
#### GPS 设置
- **使用 Meshtastic GPS** - 使用 Meshtastic 设备 GPS 作为 ATAK 的外部 GPS 源(默认:关闭)
#### 加密
- **启用额外加密** - 使用 AES-256-GCM 和 PSK 加密所有出站消息(默认:关闭)
- **加密 PSK** - 加密的前共享密钥,所有用户必须具有相同的密钥
## 将 Meshtastic 作为外部 GPS 使用
要将您的 Meshtastic 设备作为 ATAK 的 GPS 源使用:
### 要求
- 带有 GPS 接收器的 Meshtastic 设备(例如,LILYGO T-Beam)
- 在 Meshtastic 设备上启用并配置 GPS
- 在 Meshtastic 设置中配置位置数据包
### ATAK 配置
1. 导航到 **设置 → 调令和设备首选项 → 设备首选项 → GPS 首选项**
2. 将 **GPS 选项** 设置为 "忽略内部 GPS / 仅使用外部或网络 GPS"
3. 在插件设置中启用 **使用 Meshtastic GPS**
4. 禁用 **显示 Meshtastic 设备** 以避免重复标记
## 语音备忘录功能
语音备忘录工具允许免提消息传输:
1. 通过 **Meshtastic 插件工具菜单 → 语音备忘录** 访问
2. 按住配置的 PTT 按钮进行录音
3. 释放以将语音转换为文本并传输
4. 启用 TTS 的接收者将听到消息
**注意:** 目前仅支持英语,由 Vosk 语音识别库提供支持。
## 技术细节
### 架构组件
#### 核心服务
- **MeshServiceManager** - 处理与 Meshtastic Android 应用的连接和通信
- **CotEventProcessor** - 处理和转换 CoT 和 Meshtastic 格式
- **FountainChunkManager** - 管理喷泉码编码以进行大量数据传输
- **NotificationHelper** - 处理用户通知以进行文件传输
#### 数据流
1. ATAK 的 CoT 事件被插件拦截
2. 事件被处理并转换为 Meshtastic protobuf 格式
3. 大消息(>231 字节)使用喷泉码(LT 码)编码
4. 数据包通过 IMeshService 发送到连接的 Meshtastic 设备
5. 接收到的 Meshtastic 数据包被转换回 CoT 格式
6. CoT 事件被注入到 ATAK 的事件调度器中
### 支持的消息类型
- 位置位置信息(PLI)
- GeoChat 消息(所有聊天室和直接消息)
- Meshtastic 节点的传感器数据
- 通用 CoT 事件(使用 EXI 压缩)
### 性能优化
- 喷泉码编码,用于在有损网络上可靠地传输大量有效载荷
- EXI 压缩,用于通用 CoT 事件
- 优化的 protobuf,用于 PLI 和聊天消息
- 可配置的跳数限制,用于网络范围控制
## 从源代码构建
### 要求
- Android Studio Arctic Fox 或更高版本
- Android SDK 33
- Android NDK
- ATAK SDK(CIV 或 MIL)
### 构建步骤
```
# 克隆仓库
git clone --recurse-submodules https://github.com/meshtastic/ATAK-Plugin.git
cd ATAK-Plugin
# 配置 local.properties 文件中的 SDK 路径和签名密钥
cp local.properties.example local.properties
# 使用您的配置编辑 local.properties 文件
# 构建插件
./gradlew assembleCivDebug
# 输出 APK 将位于 app/build/outputs/apk/
```
## 视频教程
要全面了解功能和设置,请观看我们的 [视频教程](https://www.youtube.com/watch?v=7cn4ofiSd0A).
## 故障排除
### 常见问题
**插件无法连接到 Meshtastic:**
- 确保已安装并运行 Meshtastic 应用
- 检查 Meshtastic 设备是否已配对并连接
- 验证插件具有必要的权限
**消息无法接收:**
- 确认设备之间的通道设置匹配
- 检查跳数限制是否足够用于您的网络
- 验证节点是否在无线电范围内
**GPS 无法工作:**
- 确保Meshtastic 设备已获得 GPS 定位
- 验证位置数据包已在 Meshtastic 中启用
- 检查 ATAK GPS 设置是否已配置为外部 GPS
## 贡献
欢迎贡献!请:
1. 分叉存储库
2. 创建功能分支
3. 进行更改
4. 提交拉取请求
有关详细指南,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md).
## 支持
- **问题:** [GitHub 问题](https://github.com/meshtastic/ATAK-Plugin/issues)
- **讨论:** [Meshtastic Discord](https://discord.gg/meshtastic)
- **文档:** [Meshtastic 文档](https://meshtastic.org)
## 许可证
有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
## 致谢
- TAK.gov 的 ATAK 开发团队
- Meshtastic 社区和贡献者
- Vosk 语音识别库
- EXIficient 压缩库
## 版本历史
有关版本历史和发布说明,请参阅 [CHANGELOG.md](CHANGELOG.md).标签:Android开发, Android插件, ETW劫持, GPS支持, JS文件枚举, Meshtastic, 位置信息共享, 单例模式, 团队意识工具, 客户端加密, 性能优化, 战术信息传递, 战术信息共享, 战术信息工具, 战术信息解决方案, 战术协作, 战术应用工具, 战术应用插件, 战术应用解决方案, 战术数据共享, 战术网络, 战术网络工具, 战术网络插件, 战术网络解决方案, 战术通信, 战术通信工具, 战术通信插件, 战术通信解决方案, 文件传输, 日志记录, 服务器中继, 检测绕过, 模块化架构, 移动应用, 线程安全, 网络编码, 网络设备, 聊天集成, 语音备忘录, 错误处理