ScrcpyForAndroid

Introduction: Scrcpy android client
More: Author   ReportBugs   
Tags:
scrcpy

scrcpy android client

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

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

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

下载

> releases

截图

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 8,98.4% 的设备都能成功安装上,只是出问题不管 出问题了 (特别是崩溃闪退) 带 logcat 来尽量修
  • 更多的文件操作,包括不限于 删除, 重命名
    • 可以长按复制路径去终端用 rm, mv
  • 录制的进一步优化
    • MediaCodec 限制太大,再继续做要引入 ffmpeg,ofc 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
Apps
About Me
GitHub: Trinea
Facebook: Dev Tools