使用Scrcpy 在电脑显示手机画面并控制安卓设备
使用Scrcpy 显示手机画面并控制手机
原文(有删改):https://www.iplaysoft.com/scrcpy.html
背景
本文适用于安卓开发人员,不针对普通安卓手机用户。
在安卓开发调试中,有时候需要操作到设备。但有些设备的屏幕又比较特殊,例如缺少触摸屏,或者屏幕显示效果很奇怪。因此需要使用到一些关于投屏工具。
例如: Vysor。
可惜 Vysor Pro 收费较贵,免费版广告又多。而Scrcpy
就是一个比较好的开源替代品。
特性:
- 屏幕画面投屏 + 控制软件
- 跨平台支持 Win、Mac、Linux
- 支持USB 数据线 (或WiFi) 连接电脑
Scrcpy
Scrcpy 可以视为开源免费版的 Vysor 替代品,可以将安卓手机的画面投屏到电脑桌面显示上并进行操控。
简单地说,就是可以让你在电脑上控制手机!它支持鼠标控制、键盘输入、电脑剪切板复制粘贴、拖放文件传输到手机、以及拖放 APK 文件进行安装。
Scrcpy 实际的投屏效果非常理想,画面清晰流畅,基本无明显延迟,相比 Vysor 要付费后才能设置高码率,Scrcpy 可以自定义视频码率这点显得十分良心。软件支持自动横屏,操作很灵敏,实用性非常的高。
你可以方便地利用 Scrcpy 来测试 APP 应用、玩游戏、高效完成一些需要在手机上进行的复杂工作、更高效地办公;也能更方便地进行 Android 屏幕录像、截屏;甚至还能方便你上班时摸鱼划水。应用场景非常多,无论是开发者还是普通个人用户都相当的实用。
教程
Scrcpy 是一款命令行工具,没有图形界面,但这并不妨碍它成为一款出色好用的开源软件!其实它的使用也并不复杂。
GUI增强
作为一款如此出色实用的开源软件,却因为命令行的操作方式,使得它有不小的使用难度,让很多同学无法享受到它的便利,实在是遗憾。
为了解决命令行日常操作不便的问题,有热心的开发者实现了对应的GUI。
- QtScrcpy : https://gitee.com/Barryda/QtScrcpy/releases
- Scrcpy-GUI : https://github.com/Tomotoes/scrcpy-gui/releases
建议使用 Scrcpy-GUI
。
使用 Scrcpy 你无需 ROOT 手机,也不需在手机上安装 APP,只需在系统设置里启用“USB调试”( adb 调试) 即可。
连接电脑的方式可选 USB 数据线连接或 ADB 无线 WiFi 连接。
下面我们给大家提供一个 Scrcpy 的简单使用教程。
准备工作
- 准备好 USB 数据线,安卓系统版本要求 5.0 以上
- Scrcpy 需要使用 adb 驱动进行与电脑之间通讯,Windows 版的安装包里似乎已经包含了 adb。你也可以手动从下载这个 ADB 命令行工具进行安装。
- 需要在手机端的系统设置里开启「开发者选项」及「USB 调试」选项。不同的手机开启方法不尽相同,找不到选项的话可以自行去搜索一下。
Windows 平台
Windows 用户直接下载并安装,连接好数据线后,电脑上执行 scrcpy.exe 即可启动软件。首次连接时,手机上会问你是否允许它对设备进行调试,按下确认同意即可。
macOS 平台
Mac 用户需要使用 HomeBrew 命令进行安装。其实 HomeBrew 的功能很实用,它可以帮助你非常简单地一键安装/卸载各种软件,包括 Scrcpy。
安装 homebrew:
通过命令行 (Terminal) 执行 ,如已安装可跳过
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装 Scrcpy:
(如果网络太慢,可以考虑
更换 Homebrew 国内源
或使用代理)
brew install scrcpy
安装 ADB:
如果你没有安装
ADB 命令行工具
,那么也可以用 brew 来安装
brew cask install android-platform-tools
使用 USB 数据线连接手机后,执行
scrcpy
命令即可启动软件。首次连接会在手机上问你是否允许它对设备进行调试,按下确认同意即可。如果你有多台手机连接到电脑,可以执行
adb devices
查看每一台设备对应的ID,然后执行scrcpy -s 设备ID
来连接使用指定的设备。
Linux 平台
Linux 用户可以参考官网的说明自己编译安装。
sudo snap install scrcpy
Scrcpy 命令参数
这些参数可以多个自由组合使用,注意区分大小写。
Scrcpy 的命令参数 | |
---|---|
关闭手机屏幕 | scrcpy -S |
限制画面分辨率 | scrcpy -m 1024 (比如限制为 1024) |
修改视频码率 | scrcpy -b 4M (默认 8Mbps,改成 4Mbps) |
裁剪画面 | scrcpy -c 1224:1440:0:0 表示分辨率 1224x1440 并且偏移坐标为 (0,0) |
多设备切换 | scrcpy -s 设备ID (使用 adb devices 命令查看设备ID) |
窗口置顶 | scrcpy -T |
显示触摸点击 | scrcpy -t 在演示或录制教程时,可在画面上对应显示出点击动作 |
全屏显示 | scrcpy -f |
文件传输默认路径 | scrcpy --push-target /你的/目录 将文件拖放到 scrcpy 可以传输文件,此命令指定默认保存目录 |
只读模式(仅显示不控制) | scrcpy -n |
屏幕录像 | scrcpy -r 视频文件名.mp4 或 .mkv |
屏幕录像 (禁用电脑显示) | scrcpy -Nr 文件名.mkv |
设置窗口标题 | scrcpy --window-title '异次元好棒!' |
同步传输声音 | 可借助 USBaudio 这个开源项目实现,但仅支持 Linux 系统 |
Scrcpy 快捷键
启动之后,你就可以在电脑桌面上看到 Scrcpy 的投屏窗口和手机画面了,你可以直接用鼠标进行操作,它同时也有很多键盘快捷键可以使用。
Scrcpy 快捷键列表 | |
---|---|
切换全屏模式 | Ctrl +F |
将窗口调整为1:1(完美像素) | Ctrl +G |
调整窗口大小以删除黑色边框 | Ctrl +X | 双击黑色背景 |
设备 HOME 键 |
Ctrl +H | 鼠标中键 |
设备 BACK 键 |
Ctrl +B | 鼠标右键 |
设备 任务管理 键 (切换APP) |
Ctrl +S |
设备 菜单 键 |
Ctrl +M |
设备音量+ 键 |
Ctrl +↑ |
设备音量- 键 |
Ctrl +↓ |
设备电源键 |
Ctrl +P |
点亮手机屏幕 | 鼠标右键 |
复制内容到设备 | Ctrl +V |
启用/禁用 FPS 计数器(stdout) | Ctrl +i |
安装APK | 将 apk 文件拖入投屏 |
传输文件到设备 | 将文件拖入投屏(非apk) |
注:在 macOS 平台上,请使用 cmd
代替 Ctrl
。
屏幕录像
如有需要,你也可以通过命令对连接好的安卓手机进行录屏,并将视频保存为 .mp4 格式。
- 投屏并录屏:
scrcpy -r file.mp4
- 不投屏只录屏:
scrcpy -Nr file.mp4
scrcpy 录屏效果
使用 WIFi 连接
Scrcpy 使用 adb 与 Android 设备通讯,而 adb 本身是支持无线连接的。因此除了 USB 数据线之外,我们也能无线使用。前提是需要保证手机和电脑处于同一局域网 (连接到相同的 WiFi 路由器),步骤如下:
- 查询设备当前的 IP 地址 (设置 →关于手机→状态)
- 启用 adb TCP/IP 连接,执行命令:
adb tcpip 5555
,其中 5555 为端口号 - 拔掉你的数据线
- 通过 WiFi 进行连接,执行命令:
adb connect 设备IP地址:5555
- 重新启动 scrcpy 即可
- 如果 WiFi 较慢,可以调整码率:
scrcpy -b 3M -m 800
,意思是限制 3 Mbps,画面分辨率限制 800,数值可以随意调整。 - 如需切换回 USB 模式,执行:
adb usb
总结
个人感觉 Scrcpy 用来办公真的很方便,可以在电脑前轻松处理手机端的事情,对于没有电脑端的 App,或必须用手机来操作时,Scrcpy 真的能让你效率猛增!绝对是人手必备的利器。
再加上 Scrcpy 完全免费开源,支持跨平台,支持录屏,而且是独立的程序。
使用Scrcpy 在电脑显示手机画面并控制安卓设备的更多相关文章
- 使用Scrcpy实现电脑控制安卓手机
很多时候我们想要在电脑上使用一些手机软件,使用模拟器当然是一种选择,但是这些模拟器要不然不免费,要不然广告多不放心.Scrcpy是一个开源免费的软件,通过abd命令实现了安卓手机投屏和控制功能,并且支 ...
- [UWP]涨姿势UWP源码——适配电脑和手机
上一篇我们介绍了绘制主界面的MainPage.xaml,本篇则会结合MainPage.xaml.cs来讲一讲如何适配电脑和手机这些不同尺寸的设备. 同时适配电脑和手机存在几个麻烦的地方: 屏幕尺寸差距 ...
- 通过JS语句判断WEB网站的访问端是电脑还是手机
通过JS语句判断WEB网站的访问端是电脑还是手机,以显示不同的页面! 目录腾讯网的适配代码如何判断访问网站的机器类型-如何判断ipadJS 判断浏览器客户端类型(ipad,iphone,android ...
- 电脑时间显示秒 win10电脑显示农历
win10电脑时间显示秒 显示农历. Win10怎样让任务栏时间显示秒_百度经验 win10电脑显示农历 网上搜到的不管用. 直接下载win10万年历.我下载的人生日历. 最烦广告, 还有一些流氓行为 ...
- WordPress主题设置插件,让你的站点有电脑、手机双主题
我们建站的时候总是会优先考虑自适应的主题,但是与之对应,免费的自适应主题都调用国外公共资源,访问速度不太理想.加上wordpress未经优化之前,本身也没有极高的访问效率.所以大家可以下载这款“主题设 ...
- JS判断web网站访问端是PC电脑还是手机
通过JS语句判断WEB网站的访问端是电脑还是手机,以显示不同的页面! <script type="text/javascript"> <!-- //平台.设备和操 ...
- PHP判断访问终端,电脑或手机访问
函数代码: //判断电脑或手机访问 function is_mobile(){ $user_agent = $_SERVER['HTTP_USER_AGENT']; $mobile_agents = ...
- 使用WebRTC实现电脑与手机通过浏览器进行视频通话
最近一直在研究WebRTC,做了一个小项目:www.meet58.com,这个项目利用WebRTC.WebSocket可以让各种设备只通过浏览器进行视频聊天,无论是电脑.手机或者是平板.下面就是手机和 ...
- 使用JS在页面进行数据处理时显示等待画面
使用js在页面进行数据处理期间显示等待画面: 在页面选择执行函数进行数据处理期间,显示等待画面. <script> function fun(the,row_id) { //测试函数 // ...
- win7系统电脑显示windows副本不是正版怎么办
win7系统电脑显示windows副本,可以:在开始输入框中输入cmd——以管理员权限运行——在命令行中输入SLMGR -REARM,——重启.
随机推荐
- QT Creator 远程调试 QT 程序
一.测试环境 QT Creator 版本:5.12.9 开发板:rv1126 开发环境:ubuntu20.04 开发板内核:4.19 二.配置 ARM 交叉编译器 ARM 交叉编译工具,购买开发板时, ...
- LVGL 字体
一.LVGL 内置字体 LVGL有几种不同大小的内置字体,可以通过 LV_FONT_MONTSERRAT_X 定义在 lv_conf.h 中启用. 普通字体 包含所有ASCII字符,度数符号(U + ...
- 『手撕Vue-CLI』添加自定义指令
前言 经上篇『手撕Vue-CLI』添加帮助和版本号的介绍之后,已经可以在控制台中输入 nue --help 来查看帮助信息了,但是在帮助信息中只有 --version,--help 这两个指令,而 v ...
- fastreport .net打印普通报表
fastreport .net打印普通报表 前言: .net代码层先不记录在这,后续会单独写一篇博客来记录. 直接在工具上进行功能点的实现 一.效果图 二.功能点 分页 分页小计 金额大写 三.功能点 ...
- .NET开源、功能强大、跨平台的图表库 - LiveCharts2
前言 今天大姚给大家分享一个.NET开源(MIT License).功能强大.简单.灵活.跨平台的图表.地图和仪表库:LiveCharts2. 项目介绍 LiveCharts2是一个.NET开源. ...
- SAP Adobe Form 几种文本类型
前文: SAP Adobe Form 教程一 简单示例 SAP Adobe Form 教程二 表 SAP Adobe Form 教程三 日期,时间,floating field SAP Adobe F ...
- 用 C 语言开发一门编程语言 — 条件分支
目录 文章目录 目录 前文列表 条件分支 排序函数 等于函数 if 函数 递归函数 源代码 前文列表 <用 C 语言开发一门编程语言 - 交互式解析器> <用 C 语言开发一门编程语 ...
- pod(六):初始化容器Init Containers
目录 一.系统环境 二.前言 三.初始化容器Init Containers 3.1 何为初始化容器Init Containers 3.2 Init Containers与普通容器的不同之处 3.3 I ...
- js实现 StringBuilder
function StringBuilder() { this._stringArray = new Array(); } StringBuilder.prototype.append = funct ...
- group_concat 和 case when 的坑
SELECT size,instrument_id, (CASE side WHEN "sell" THEN group_concat(id ORDER BY id) END )a ...