Jjie357059570更新API介绍
fa3a334d创建于 2025年4月24日历史提交

Hosscrcpy SDK API说明文档

版本说明

版本号 版本说明 发布时间
hosscrcpy-1.0.0-beta 老系统版本上使用
如:3.0.0.25(SP36DEVC00E25R4P2log)、3.0.0.22(SP81DEVC00E22R4P1log)等之前的版本
2024-6-25
hosscrcpy-1.0.1-beta 新系统版本上使用,即上述1.0.0中版本之后的版本都可以使用 2024-6-25
hosscrcpy-1.0.2-beta 一、新增内容
1、HosRemoteDevice新增HosRemoteConfig变量初始化,支持设备分辨率
2、HosRemoteDevice新增获取当前页面layout的接口
二、修复问题
2024-9-5
hosscrcpy-1.0.3-beta 一、新增内容
1、优化启动速度
二、修复问题
2024-9-23
hosscrcpy-1.0.4-beta 一、新增内容

二、修复问题
1.修复5.0.0.71(SP6C00E71R4P17)版本无法投屏的问题
2024-10-12
hosscrcpy-1.0.5-beta 一、新增内容
1、HosRemoteConfig 对象中支持设置投屏帧率、码率、端口号
二、修复问题
2024-12-31
hosscrcpy-1.0.6-beta 一、新增内容
1、HosRemoteConfig 对象中支持设置HDC路径
二、修复问题
2025-2-28
hosscrcpy-1.0.7-beta 一、新增内容
1、HosRemoteConfig 对象中支持设置视频流I帧的间隔
二、修复问题
hosscrcpy-1.0.8-beta 一、新增内容
1、HosRemoteDevice 对象中添加获取图片流和停止图片流的方法
二、修复问题
hosscrcpy-1.0.9-beta 一、新增内容
1、HosRemoteDevice 对象中添加鼠标注入事件
二、修复问题

API说明

java版本需要在8及以上

sdk提供给开发者使用的类路径在com.huawei.hosscrcpy.api下,有以下3个类

1.HosRemoteDevice

方法 参数 解释
HosRemoteDevice(String sn) sn 构造函数,通过传入sn号创建Scrcpy对象
HosRemoteDevice(HosRemoteConfig config) config 构造函数,通过创建HosRemoteConfig对象,可以设置获取视频流分辨率的缩放倍率
startCaptureScreen(ScreenCapCallback screenCapCallback) screenCapCallback 通过传入视频流回调函数来开始获取视频流以及开启实时反控服务
stopCaptureScreen() 停止获取视频流
getSn() 获取当前Scrcpy对象的sn
executeShellCommand(String command, int timeOut) command, timeOut 让设备执行hdc shell命令。command:要执行的shell命令,timeOut:超时时间,单位秒
getScreenSize(boolean needUpDate) needUpDate 获取当前设备分辨率。传入true会重新获取分辨率信息,传入false会使用之前缓存的分辨率信息
onTouchDown(int x, int y) x, y 注入手指按下事件,xy为手指按下的坐标
onTouchUp(int x, int y) x, y 注入手指抬起事件,xy为手指抬起的坐标
onTouchMove(int x, int y) x, y 注入手指移动事件,xy为手指移动的坐标
onMouseDown(String mouseType, int x, int y) mouseType, x, y 注入鼠标按下事件,xy为鼠标按下的坐标。mouseType 可选 HosRemoteDevice.MOUSE_LEFT, HosRemoteDevice.MOUSE_MIDDLE, HosRemoteDevice.MOUSE_RIGHT;对应的类型分别是鼠标左键、中间、右键
onMouseUp(String mouseType, int x, int y) mouseType, x, y 注入鼠标抬起事件,xy为鼠标抬起的坐标。mouseType 可选 HosRemoteDevice.MOUSE_LEFT, HosRemoteDevice.MOUSE_MIDDLE, HosRemoteDevice.MOUSE_RIGHT;对应的类型分别是鼠标左键、中间、右键
onMouseMove(String mouseType, int x, int y) mouseType, x, y 注入鼠标移动事件,xy为鼠标移动的坐标。mouseType 可选 null ,HosRemoteDevice.MOUSE_LEFT, HosRemoteDevice.MOUSE_MIDDLE, HosRemoteDevice.MOUSE_RIGHT;当传入null时,表示注入的是普通的鼠标移动事件,典型场景是像Windows电脑将鼠标悬d浮移动到某个地方.
onMouseWheelUp(int x, int y) x, y 注入鼠标滚轮向上滑动事件, xy为鼠标当前的坐标。
onMouseWheelDown(int x, int y) x, y 注入鼠标滚轮向下滑动事件, xy为鼠标当前的坐标。
onMouseWheelStop(int x, int y) x, y 注入鼠标滚轮停止滑动事件, xy为鼠标当前的坐标。onMouseWheelStop需要跟在onMouseWheelUp或onMouseWheelDown事件后使用
setRotationHorizontal() 设置设备屏幕为横屏状态(需要应用支持)
setRotationVertical() 设置设备屏幕为竖屏状态(需要应用支持)
getLayout() 获取当前页面结构json字符串(需要startCaptureScreen后才能调用)
startImageCaptureScreen(ScreenCapCallback screenCapCallback) screenCapCallback 通过传入图片流回调函数来开始获取图片流以及开启实时反控服务
stopImageScreenCapture() 停止获取图片流

2.ScreenCapCallback

方法 参数 解释
onData(ByteBuffer byteBuffer) byteBuffer 当sdk获取到视频流数据后,会回调此方法,并传入视频流的ByteBuffer,开发者可以用此进行画面显示
onException(Throwable throwable) throwable 当获取视频流出错后,会回调此方法,传入报错信息
onReady() 因为需要设备画面变动才能获取视频流,所以如果设备以及处于一个亮屏且画面没有变动的状态时,onData方法是不会被调用。onReady方法是为了通知开发者当前已处于视频流获取就绪状态,开发者可以在此进行一些使画面变动的动作,比如按下电源键

3.HosRemoteConfig

方法 参数 解释
HosRemoteConfig(String sn) sn 设备的sn
setScale(int scale) scale 视频流分辨率的缩放倍率(输入2代表获取的视频流分辨率为原来的二分之一,3代表为原来的三分之一;最大设置为5)
setBitRate(int bitRate) bitRate 视频流码率,默认码率为30M
setPort(int port) port 设备侧视频流转发端口,默认为5000
setFrameRate(int frameRate) frameRate 视频流的帧率,默认为120FPS
setHdcPath(String hdcPath) hdcPath hdc可执行文件的完整路径
setIFrameInterval(int iFrameInterval) iFrameInterval 视频流I帧的间隔,默认为2000ms

4.Size

属性 解释
width 设备分辨率的宽度
height 设备分辨率的长度

Demo示例说明

以下为一个以maven构建的demo工程实例

demo原理:通过在本地创建一个WebSocket服务端启动投屏服务,然后在网页端进行投屏的查看以及控制

使用方法:

1.执行MyWebSocket下的main方法,以此启动WebScoket服务

2.修改resources/html下的h264.html的第31行,填写自己本地设备的sn号

3.用浏览器打开h264.html,稍等片刻即可看到投屏画面 PS:静止画面下不会自动刷新,可以滑动下手机看看