謬紗特 a3ba7fc918 refactor: introducing ViewModel (#17)
* move to viewModel; use submodule to import miuix

* replace widgets with which implemented in miuix

* update CHANGELOG.md

* fix: coroutine handling

* chore: code formatting

* viewModel for TerminalScreen

* viewModel for FileManagerScreen

* chore: code formatting

* fix for review

* chore: optimize imports
2026-04-28 21:01:00 +08:00
2026-04-15 15:56:41 +08:00
2026-04-28 21:01:00 +08:00
2026-03-19 08:53:26 +08:00
2026-03-19 08:53:26 +08:00
2026-03-19 08:53:26 +08:00
2026-03-19 08:53:26 +08:00
2026-03-19 07:34:37 +08:00
2026-04-24 23:49:19 +08:00

Scrcpy for Android

scrcpy

scrcpy android client

从通过 ADB Wireless 连接的 Android 设备镜像视频与音频,并允许使用触摸屏与键盘鼠标进行控制

不需要 root 权限,也无需在设备上安装应用程序

Note

本项目基于 scrcpy但并非其官方版本与原作者及维护团队不存在任何隶属或合作关系

截图

Devices Recent Tasks Streaming Scrcpy All Options Terminal Files Settings Multi Touch Test Virtual Buttons Reorder About

PiP Gaming

Features

  • 控制时可拉起本机输入法,且支持输入中文
  • 剪贴板同步
  • 低延迟音频链路 (默认未启用)
    • 受控设备播放 USAGE_MEDIA 流时 (namidaco/namida) ,两设备的音频延迟只差半拍 (没有具体测量能力)
    • 受控设备播放 USAGE_GAME 流时 (明日方舟 Bilibili 服) ,仍存在 100~200ms 的有感延迟
  • 带生物认证的锁屏密码自动填充 (入口位于虚拟按钮中)
  • 多配置切换,设备绑定配置,连接后直接进入全屏
  • 可替换 scrcpy-server
  • 利用 mDNS 服务实现自动连接启用无线调试的设备、自动发现等待配对设备的IP与端口
  • 自动横竖屏切换(算吗
  • 横屏布局
    • 仅屏幕比例小于 16:9 的设备
  • 全屏下映射返回键到远程
  • 画中画
  • 双向文件传输
  • 流式 adb 终端
  • 内置录制

已知问题

  • 刚开始串流时有概率丢失关键帧导致花屏,等待一段时间后重新接收关键帧即可
  • 因为没有设备用于 (也懒得) 测试,应用可能无法正常运行在安卓版本较低的设备上,特别是画中画功能,非常取决于国产 ROM 的实现
  • 关闭画中画后不会停止 scrcpy 串流,仍然需要回到应用中点击停止
  • 跨设备输入中文
    • 实现方式为利用剪贴板同步,会导致受控机剪贴板历史被填充输入历史
    • 不知道为什么有时候会上屏失败
  • 虚拟按键的截图实现方式为发送 keycode 120,安卓官方(keycodes.h#349)的定义为 System Request / Print Screen key.,不同的厂商有不同的实现,在某些类原生(AxionOS) 上的行为是软重启

TODO

> TODO.md

NOT-TODO

  • 低版本安卓适配
    • 项目的 minSdk 为 26 / Android 898.4% 的设备都能成功安装上,只是出问题不管
  • 更多的文件操作,包括不限于 删除, 重命名
    • 可以长按复制路径去终端用 rm, mv
  • 录制的进一步优化
    • MediaCodec 限制太大,再继续做要引入 ffmpegofc no way
  • ADB 安装应用 / adb install
    • 需要大改 JNI 的实现因此不做
    • 可以推送文件之后使用终端安装或手动控制安装
  • 有线控制 / fastboot
    • 左转甲壳虫

Change Log

> CHANGELOG.md

建议搭配模块

FAQ

  1. 控制不了

  2. 切到后台后 ADB 断连

    • 将国产 ROM 中的 省电策略 调整至 无限制
    • 将安卓原生设置中的 允许后台使用 启用并设置为 无限制 (应用设置页中有入口)
  3. 虚拟屏不显示输入法 / 输入法显示在主屏幕

    • --display-ime-policy 设置为 local
    • 自行在悬浮球中拉起本机输入法
  4. 码率只能拉到 40Mbps 嫌低

    • 每个 Slider 选项的标题都可以点开自己输入值
  5. 录制/下载的文件在哪

    • /sdcard/Movies/Scrcpy/
    • /sdcard/Download/Scrcpy/
  6. 横屏模式对左撇子不太友好

    • 右上角有按钮可以对调方向
  7. MIUI 虚拟屏没有桌面 / 虚拟屏白屏

    • 装个第三方桌面

构建

  • JDK 17+
  • Android SDK (compileSdk 37 / buildTools 37.0.0)
  • Android NDK 29.0.14206865
git clone --recursive https://github.com/Miuzarte/ScrcpyForAndroid.git
cd ScrcpyForAndroid
./gradlew assembleDebug

已克隆但没有拉取子模块:

git submodule update --init --recursive

specific abi:

./gradlew assembleRelease -PabiList=arm64-v8a

Credits

License

Apache License 2.0

Star History

Star History Chart
Description
No description provided
Readme Apache-2.0 1.5 MiB
Languages
Kotlin 99.2%
C++ 0.6%
PowerShell 0.1%