# DroidNet **Repository Path**: SandMo/DroidNet ## Basic Information - **Project Name**: DroidNet - **Description**: Android device bridge service - HTTP+WebSocket server on 127.0.0.1:1145 for file system and hardware access - **Primary Language**: Android - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-03 - **Last Updated**: 2026-08-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DroidNet 一个轻量级的 Android 设备桥接服务,在本地 `127.0.0.1:1145` 启动 HTTP + WebSocket 服务,允许网页通过 REST API 和 WebSocket 实时访问设备的文件系统、硬件和外设。 说白了就是把你的安卓手机变成一个可以被网页控制的服务器——文件管理、手柄事件、麦克风、摄像头,全都能通过接口调用。 ## 截图
概览 控制台 设置
## 界面 应用采用三页底部导航布局,暗色仪表盘风格: - **概览** — 顶部渐变色状态卡片(运行时绿色 / 停止时红色),下方统计网格显示运行时长、请求总数、启动时间,底部设备信息列表(型号、系统版本、CPU 架构、应用版本) - **控制台** — 终端风格实时日志输出,支持彩色日志级别、一键复制和清空 - **设置** — 分区管理权限(存储、悬浮窗)、接口配置(访问令牌)、行为选项(开机自启、悬浮窗保活、打开即启动) ## 功能特性 - **文件访问** — 读写 `/storage/emulated/0/` 下的所有文件,支持列表、读取、写入、新建、复制、移动、重命名 - **手柄支持** — 多 Xbox 手柄检测,通过 WebSocket 实时推送按键和摇杆事件 - **音频控制** — 扬声器音量调节,支持左右声道独立控制,PCM 数据播放 - **麦克风输入** — 通过 WebSocket 实时采集麦克风音频流 - **摄像头输入** — 通过 WebSocket 实时推送摄像头画面(JPEG 帧) - **系统信息** — 设备型号、系统版本、屏幕、内存、存储、CPU 信息、已安装应用列表 - **权限转接** — 远程请求设备权限、启动应用、代理 Intent - **后台保活** — 前台服务 + 悬浮窗,长期低功耗运行,开机自启动 - **访问控制** — 基于 Token 的接口鉴权,可自定义访问令牌 ## 环境要求 - Android 8.0 (API 26) 及以上 - 需要以下权限(应用内引导授权): - 存储访问(MANAGE_EXTERNAL_STORAGE) - 悬浮窗(SYSTEM_ALERT_WINDOW) - 麦克风(RECORD_AUDIO) - 摄像头(CAMERA) ## 安装 ### 方式一:直接下载 APK 前往 [Releases](../../releases) 页面下载对应架构的 APK: | APK | 适用架构 | |-----|---------| | `app-arm64-v8a-release.apk` | 64 位 ARM(大多数现代手机) | | `app-armeabi-v7a-release.apk` | 32 位 ARM(旧设备) | | `app-x86_64-release.apk` | x86 64 位(模拟器) | | `app-x86-release.apk` | x86 32 位(模拟器) | | `app-universal-release.apk` | 通用版(包含所有架构) | ### 方式二:自行编译 ```bash git clone https://gitee.com/SandMo/DroidNet.git cd DroidNet ./gradlew assembleRelease ``` 编译产物在 `app/build/outputs/apk/release/`。 ## 使用方法 1. 安装并打开 DroidNet 2. 切换到 **设置** 页,点击「存储访问权限」和「悬浮窗权限」完成授权 3. 切换到 **概览** 页,点击「启动服务」按钮 4. 服务启动后,状态卡片变为绿色,显示运行时长和请求计数 5. 在同一设备的浏览器中访问 `http://127.0.0.1:1145` 即可看到 API 列表 6. 如需鉴权,在「设置 > 访问令牌」中设置 Token,请求时携带 `Authorization: Bearer ` ### 快速测试 ```bash # 健康检查 curl http://127.0.0.1:1145/api/ping # 列出根目录文件 curl http://127.0.0.1:1145/api/fs/list?path=/storage/emulated/0 # 查看已连接的手柄 curl http://127.0.0.1:1145/api/hw/gamepads # 获取系统信息 curl http://127.0.0.1:1145/api/hw/info ``` 完整的 API 文档见 [PROTOCOL.md](PROTOCOL.md)。 ## 配置 在 App **设置** 页可以配置以下选项: | 选项 | 说明 | |------|------| | 访问令牌 | 设置后所有接口需要携带 Token 鉴权,留空则不鉴权 | | 开机自启动 | 设备开机时自动启动桥接服务 | | 悬浮窗保活 | 显示悬浮窗防止后台被杀 | | 打开即启动 | 每次打开 App 时自动启动服务 | ## 项目结构 ``` DroidNet/ ├── app/src/main/java/com/droidnet/ │ ├── DroidNetApp.java # Application 入口 │ ├── MainActivity.java # 底部导航 + Fragment 切换 │ ├── ui/ # 三个页面 Fragment │ │ ├── InfoFragment.java # 概览:服务状态、运行统计、设备信息 │ │ ├── ConsoleFragment.java # 控制台:实时日志输出 │ │ └── SettingsFragment.java # 设置:权限、配置、行为选项 │ ├── util/ # 工具类 │ │ ├── PrefManager.java # SharedPreferences 封装 │ │ ├── LogBuffer.java # 内存日志缓冲 │ │ └── RequestCounter.java # 请求计数与运行时长 │ ├── fs/FileManager.java # 文件操作 │ ├── hardware/ # 硬件访问 │ │ ├── GamepadManager.java │ │ ├── AudioController.java │ │ ├── MicCapture.java │ │ ├── CameraCapture.java │ │ ├── SystemInfoProvider.java │ │ └── PermissionProxy.java │ ├── server/ # HTTP/WebSocket 服务 │ │ ├── DroidHttpServer.java │ │ ├── ApiRouter.java │ │ └── AuthInterceptor.java │ ├── service/ # 后台服务 │ │ ├── BridgeService.java │ │ └── KeepAliveService.java │ └── receiver/BootReceiver.java ├── app/src/main/res/ # 资源文件(暗色主题、矢量图标) ├── PROTOCOL.md # API 协议文档 ├── LICENSE # MIT 许可证 └── build.gradle # Gradle 构建配置 ``` ## 技术栈 - Java 17 + Android SDK 35 - NanoHTTPD / NanoWSD(HTTP + WebSocket 服务器) - AndroidX / Material Design 3(Dark NoActionBar 主题) - Camera2 API(摄像头) - AudioRecord / AudioTrack(音频采集与播放) - InputDevice API(手柄检测) ## 注意事项 - 服务监听在 `127.0.0.1`,仅允许本机访问。如果需要远程访问,请自行实现端口转发或 VPN。 - 手柄事件捕获需要悬浮窗获得焦点(点击悬浮窗图标切换到手柄模式,图标变绿表示已激活)。 - 麦克风和摄像头功能需要对应权限,WebSocket 连接时自动开始采集,断开时自动停止。 - 在 Android 14+ 上,前台服务类型为 `specialUse`。 ## 开源协议 [MIT License](LICENSE) ## 贡献 欢迎提 Issue 和 PR。如果你用到了这个项目,给我个 Star 就行。