华为小米都在布局的多屏协同,其实Android早就有了!只是你不知道...

哈喽,我是老刘

双11可能不少朋友在置办手机、笔记本。

如果你是冲着多设备协同办公去的,先别急着下单,老刘给你推荐一款我们日常工作中常用的开源工具,看看能不能满足你多设备协同的需求。

看完这篇文章,你将学会如何用scrcpy解锁手机的隐藏技能,彻底改变你的工作和娱乐方式!

接下来我们先说有哪些使用场景,最后再介绍其背后的原理。

使用场景

1. 准备工作

  • 下载并安装scrcpy 3.0以上版本。

    下载完成后,根据你的操作系统选择对应的安装方式:

    • Windows:直接解压即可使用。 你可以在GitHub上找到scrcpy的最新版本。

      github.com/Genymobile/...

    • Mac:使用Homebrew安装,命令如下:

      bash 复制代码
      brew install scrcpy
    • Linux:通过包管理器安装,例如Ubuntu用户可以运行:

      bash 复制代码
      sudo apt install scrcpy
  • 确保手机和电脑通过USB连接,并开启开发者模式。

    开启开发者模式的方法如下:

    1. 打开手机的"设置"。
    2. 找到"关于手机"或"关于设备"。
    3. 连续点击"版本号"7次,直到提示"您已进入开发者模式"。
    4. 返回设置,进入"开发者选项"。
    5. 启用"USB调试"。

    完成以上步骤后,用数据线将手机连接到电脑,确保连接稳定。

2. 实现屏幕镜像

完成准备工作后,我们可以先体验scrcpy的基础功能------屏幕镜像。

只需运行以下命令:

bash 复制代码
scrcpy

手机屏幕就会实时投射到电脑上。

你可以直接用鼠标和键盘操作手机,就像操作电脑上的应用一样。

比如:

  • 在电脑上回复手机消息,打字速度更快。
  • 用大屏幕查看手机上的图片或文档,细节更清晰。

更重要的事是,这一切都非常流畅,几乎没有延迟。

如果你是第一次使用scrcpy,可能会惊叹于它的流畅度和高效性。

如果在屏幕镜像的时候希望手机本身的屏幕是关闭的,也可以使用以下命令:

bash 复制代码
scrcpy --turn-screen-off

总结来说,屏幕镜像是scrcpy最基础但非常实用的功能,值得一试!

3. 多设备协同操作

如果你觉得屏幕镜像已经够强大了,那接下来的功能会让你更加惊喜。

scrcpy支持通过--new-display参数,为手机创建多个虚拟显示窗口。

每个窗口都可以独立运行一个应用,真正实现多任务协同操作。

下面列举几种老刘自己常用的多窗口操作场景:

  • 在一个窗口中打开阅读应用,同时在另一个窗口中打开聊天应用。 这样你可以一边阅读,一边回复消息,效率直接拉满。

    bash 复制代码
    scrcpy --new-display --start-app=com.tencent.weread --window-title="微信读书" 
    
    scrcpy --new-display --keyboard=uhid  --display-ime-policy=local --start-app=com.tencent.mm --window-title="微信" 

    参数说明:

    • --new-display:为手机创建一个新的虚拟显示窗口。
    • --start-app:指定要在窗口中运行的应用包名。
    • --window-title:为窗口指定一个标题,方便识别。
    • --keyboard=uhid:启用物理键盘输入,避免在窗口中输入时被遮挡。
    • --display-ime-policy=local:将输入法设置为本地输入法,避免在窗口中输入时被遮挡。
  • 如果你是开发者,可以通过--new-display参数为应用指定不同的分辨率和刷新率,方便调试应用在不同屏幕上的适配情况。

    bash 复制代码
    scrcpy --new-display --start-app=com.example.flutter_test_1 --window-title="原始分辨率" 

    --new-display参数默认使用手机本身的分辨率创建虚拟显示窗口。

arduino 复制代码
```bash
scrcpy --new-display=1080x1080 --start-app=com.example.flutter_test_1 --window-title="特殊分辨率" 
```

通过`--new-display=1080x1080`参数,我们可以为应用创建一个1080x1080的虚拟显示窗口。

比如老刘这边也经常会用这种方式给运营展示产品海报在不同手机上的显示效果。

  • 看短剧时,将窗口调整为适合视频比例的宽高比,避免画面被裁剪。 不知道大家发现没有,最近很火的短剧,在手机端和ipad上都会被裁剪,手机端一般是裁剪两边,而ipad端是裁剪上下部分。

    这两种方式裁剪都有可能导致画面内容被裁掉一部分。

    原因是短剧的视频比例一般是9:16,而手机端常见的分辨率是1080x2400左右,ipad常见的分辨率是3:4左右。

    这种情况下,我们可以通过--new-display=1080x1920参数,为应用创建一个1080x1920的虚拟显示窗口,保证视频的画面完整显示。

    这里用番茄读书中的短剧作为展示:

    bash 复制代码
    scrcpy --new-display=1080x2000 --start-app=com.dragon.read --window-title="短剧" 

    这里1080x2000分辨率多出来的部分是底部选集的区域,不会影响视频的显示。

怎么样,无论是工作还是娱乐,多设备协同操作都能让你的体验更上一层楼!

想象一下你可以打开多个不同分辨率的应用同时操作,是不是和直接操作电脑一样方便?

是不是比不少厂商的多设备协同操作功能更加强大?

其实不少厂商的多设备协同功能和scrcpy使用的是相同的技术。

有些是把底层代码拿来改了改,有些甚至直接是scrcpy外面套了个壳。

下面我们就来看看scrcpy为啥这么强大,它的运行原理是什么?


原理

scrcpy 的强大之处在于它充分利用了 Android 系统的虚拟显示功能。

当你使用 --new-display 参数时,scrcpy 会通过 Android 的 DisplayManager API 创建一个新的虚拟显示器。

每个虚拟显示器都相当于一个独立的屏幕,系统会为其分配一个独立的显示端口。

你的手机可以同时运行多个应用,并将它们的画面分别投射到不同的虚拟显示器上。

而且 scrcpy 允许你为每个虚拟显示器设置不同的分辨率和刷新率。

这背后的原理是,Android 系统本身支持多显示器模式,厂商的多设备协同功能也是基于这一特性开发的。

scrcpy 则是将这一功能开放给了普通用户,并通过简单的命令行参数,让你可以轻松实现这些功能。

此外,scrcpy 的高效性得益于它的使用了串流方式,将手机屏幕内容实时编码后,通过 USB 或 Wi-Fi 传输到电脑。

这种方式不仅保证了画面的高质量,还能最大程度地降低延迟。现在在pc端比较流行的远程游戏方案也都基于这种串流的方式。

所以,无论是屏幕镜像还是多设备协同操作,scrcpy 都能提供流畅的体验。


总结

从基础的屏幕投射到高级的多窗口操作,scrcpy 用开源的方式打破了厂商壁垒,让每个人都能拥有比官方解决方案更强大的多设备协同能力。

而且这一切都是免费的。

不需要购买昂贵的硬件设备,不需要订阅付费服务,只需要一条 USB 数据线和几个简单的命令,就能让你的手机和电脑完美融合。

下次再看到各种花里胡哨的多设备协同功能时,不妨想想:其实你可能早就拥有了更强大的工具,只是还不知道怎么用而已。

好了,如果看到这里的同学对客户端或者Flutter开发感兴趣,欢迎联系老刘,我们互相学习。 私信免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。 可以作为Flutter学习的知识地图。

------ laoliu_dev

相关推荐
恋猫de小郭1 小时前
移动端开发稳了?AI 目前还无法取代客户端开发,小红书的论文告诉你数据
前端·flutter·ai编程
MakeZero3 小时前
Flutter那些事-交互式组件
flutter
shankss3 小时前
pull_to_refresh_simple
flutter
shankss3 小时前
Flutter 下拉刷新库新特性:智能预加载 (enableSmartPreload) 详解
flutter
阿巴斯甜6 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker6 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq95277 小时前
Andorid Google 登录接入文档
android
黄林晴9 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab21 小时前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android