手机投屏到电脑

news/2024/7/21 4:57:43 标签: 智能手机, 电脑

手机投屏到电脑

Github 有2个开源的手机投屏项目:

Scrcpy: https://github.com/Genymobile/scrcpy
QtScrcpy: https://github.com/barry-ran/QtScrcpy

在这里插入图片描述

这2个项目都很好用,我这里用的是 Scrcpy:

官方文档中介绍了如何在windows上使用 Scrcpy 连接手机:

在这里插入图片描述
使用 USB 数据线连接上电脑,打开 USB 调试(需要先打开开发者选项功能,不同手机可以在百度搜索开启),
在这里插入图片描述

插上充电线的时候要选择 “传输文件” 选项,不然后面连接的时候会显示找不到设备:
在这里插入图片描述

上面的准备完成之后,打开 Scrcpy ,点击 open_a_terminal_here.bat 选项打开命令行窗口,输入

scecpy

即可连上手机,连不上,可以使用下列命令查看是否有扫描到设备。

./adb devices

第二种方式是通过无线连接:

我这里是手机开热点给电脑连。
首先找到手机的 IP,小米10 可以通过下列路径找到 IP,
“我的设备” 》 “全部参数与信息” 》“状态信息” 》“IP 地址”。
在这里插入图片描述

然后在 windows 命令行窗口输入

./adb tcpip 5555

./adb connect 10.138.xxx.xxx 5555

./scrcpy.exe

到此,即可连上手机。

如果又用 usb 接口连过,又用 IP 连过,那么下次再连接的时候会报错
在这里插入图片描述

这个报错意味着在使用scrcpy时,检测到多个ADB设备连接。在你的情况下,有两个设备已经连接:
通过USB连接的设备,序列号为96a7xxxx,设备名为Mi_10。
通过TCP/IP连接的设备,IP地址为10.138.xxx.xxx,端口为5555,设备名为Mi_10。
由于存在多个设备连接,scrcpy需要你指定要使用的设备。你可以通过以下选项来选择要使用的设备:

使用 -s 或 --serial 选项,后接设备的序列号来选择USB连接的设备。
使用 -d 或 --select-usb 选项来选择USB连接的设备。
使用 -e 或 --select-tcpip 选项来选择TCP/IP连接的设备。
你可以根据需要选择要连接的设备,并在命令中指定相应的选项来解决这个问题。

当面对多个设备连接时,你可以通过以下示例命令来选择要使用的设备:

选择USB连接的设备

# 第一次要先声明使用 usb 连接:
 .\adb.exe usb
# restarting in USB mode

# 然后执行后面的命令
scrcpy -s 96a7xxxx
# 或者
scrcpy -d

选择TCP/IP连接的设备

# 第一次要先声明使用 tcpip 连接:
.\adb.exe tcpip 5555
# restarting in TCP mode port: 5555
.\adb.exe connect 10.138.241.249:5555
# connected to 10.138.241.249:5555

# 然后执行后面的命令
scrcpy -s 10.138.xxx.xxx:5555
# 或者
scrcpy -e

查看设备数

.\adb.exe devices
# List of devices attached
# 96a7xxxx        device

删除 TCP/IP连接的设备

 .\adb.exe disconnect 10.138.241.249:5555
#disconnected 10.138.241.249:5555

另外:如果鼠标滑动手机报如下错的话,

# 参考 github 链接: https://github.com/Genymobile/scrcpy/issues/4334
# https://github.com/Genymobile/scrcpy/blob/master/FAQ.md#mouse-and-keyboard-do-not-work
[server] ERROR: Could not invoke method
java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at com.genymobile.scrcpy.wrappers.InputManager.injectInputEvent(InputManager.java:37)
        at com.genymobile.scrcpy.Device.injectEvent(Device.java:225)
        at com.genymobile.scrcpy.Device.injectKeyEvent(Device.java:236)
        at com.genymobile.scrcpy.Device.pressReleaseKeycode(Device.java:244)
        at com.genymobile.scrcpy.Device.pressReleaseKeycode(Device.java:249)
        at com.genymobile.scrcpy.Controller.control(Controller.java:70)
        at com.genymobile.scrcpy.Controller.lambda$start$0$com-genymobile-scrcpy-Controller(Controller.java:91)
        at com.genymobile.scrcpy.Controller$$ExternalSyntheticLambda1.run(Unknown Source:4)
        at java.lang.Thread.run(Thread.java:1012)
Caused by: java.lang.SecurityException: Injecting input events requires the caller (or the source of the instrumentation, if any) to have the INJECT_EVENTS permission.
        at android.os.Parcel.createExceptionOrNull(Parcel.java:3011)
        at android.os.Parcel.createException(Parcel.java:2995)
        at android.os.Parcel.readException(Parcel.java:2978)
        at android.os.Parcel.readException(Parcel.java:2920)
        at android.hardware.input.IInputManager$Stub$Proxy.injectInputEventToTarget(IInputManager.java:1294)
        at android.hardware.input.InputManager.injectInputEvent(InputManager.java:1153)
        at android.hardware.input.InputManager.injectInputEvent(InputManager.java:1182)
        ... 10 more
Caused by: android.os.RemoteException: Remote stack trace:
        at com.android.server.input.InputManagerService.injectInputEventToTarget(InputManagerService.java:908)
        at android.hardware.input.IInputManager$Stub.onTransact(IInputManager.java:617)
        at android.os.Binder.execTransactInternal(Binder.java:1285)
        at android.os.Binder.execTransact(Binder.java:1249)

可以参考下面的方案解决:
在这里插入图片描述

打开USB调试按钮,重启手机即可。

在这里插入图片描述


http://www.niftyadmin.cn/n/5442677.html

相关文章

从零开始学习typescript系列4: typescript使用过程中遇到的常见使用场景和常见问题以及解决方案

全局: 如何忽略ts检查 // 单行忽略 // ts-ignore// 忽略全文 // ts-nocheck// 检查全文 // ts-check全局: 如何设置类型声明 目标 projec/types/xxx.d.ts 类型声明文件有效 {"compilerOptions": {"typeRoots": ["./node_modules/types/",…

26-软件定时器

软件定时器 一、什么是软件定时器? 自带的定时器是硬件定时器。 硬件定时器是芯片自身提供的一个功能。一般是通过外部晶振提供给芯片输入时钟,芯片向软件模块提供一组配置的寄存器,通过对寄存器的设置,能够实现定时的功能&…

计算机服务器中了faust勒索病毒怎么办,faust勒索病毒解密工具流程

网络是一把利剑,可以方便企业开展各项工作业务,为企业提供极大的便利,但随着网络技术的不断发展与应用,网络数据安全威胁也在不断增加,给企业的正常生产运营带来了极大困扰,近日,云天数据恢复中…

爬虫案例-网站分词索引与站内搜索

文章目录 1.案例简介2.设计思路3.设计结构4.关键技术5.数据结构6.数据集合7.设计过程7.1 信息采集模块7.2 索引模块7.3 网页排名和搜索 8.示例效果 1.案例简介 本例使用Python建立一个指定网站专用的Web搜索引擎,它能爬取所有指定的网页信息,然后准确的…

nacos 更新报错“发布失败。请检查参数是否正确”

文章目录 🔊博主介绍🥤本文内容起因解决方案结果 📢文章总结📥博主目标 🔊博主介绍 🌟我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华…

leetcode106从中序与后序遍历序列构造二叉树

目录 1.解题关键2.思路3.变量名缩写与英文单词对应关系4.算法思路图解5.代码 本文针对原链接题解的比较晦涩的地方重新进行说明解释 原题解链接:https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/solutions/50561/tu-jie-…

计算机网络——物理层(数据通信基础知识)

计算机网络——物理层(1) 物理层的基本概念数据通信的基本知识一些专业术语消息和数据信号码元 传输速率的两种表示方法带宽串行传输和并行传输同步传输和异步传输 信道基带信号调制常用编码方式 我们今天进入物理层的学习,如果还没有了解OSI…

Android Zygote的面试问题

问题: 什么是Zygote进程在Android系统中的作用? 答案: Zygote是Android系统中的一个核心进程,它的主要作用是作为系统启动和Android应用程序进程的母进程。Zygote预加载了Android框架层和核心库,通过复制自身创建新的应…