Skip to content

Latest commit

 

History

History
56 lines (42 loc) · 4.98 KB

外设交互处理.md

File metadata and controls

56 lines (42 loc) · 4.98 KB

简介

客户端App可以通过SDK向云端系统发送键盘、鼠标、手柄、触摸等外设事件。前后台的交互过程见链接

基础用法

键盘事件

客户端可以通过TcrSession#getKeyboard()获取到Keyboard对象, 从而向云端发送任何键盘按键的按下和抬起事件。 Windows键盘的KeyCode规范参考链接,在SDK内部的定义见WindowsKeyEvent类。

鼠标事件

客户端可以通过TcrSession#getMouse()获取到Mouse对象, 从而向云端发送鼠标左右键的按下、抬起和移动事件,以及鼠标中键的滚轮事件。

手柄事件

如果云端应用支持手柄操作(例如手柄游戏),客户端可以通过TcrSession#getGamepad()获取Gamepad对象, 从而向云端发送手柄任意按键的按下和抬起事件。 为了触发云端手柄插入和断开事件,可以调用Gamepad#connectGamepad()Gamepad#disconnectGamepad()方法。

触摸事件

无论云端是移动应用(Android系统)还是桌面应用(Windows系统), 都可以支持触摸屏操作。 当云端应用支持触摸屏操作时, 客户端可以通过TcrSession#getTouchScreen()获取TouchScreen, 从而向云端发送触摸事件。

客户端触摸事件转云端外设事件

如果您使用了SDK提供的TcrRenderView视图进行渲染,那么我们还提供了该视图触摸事件的一些默认实现类,可以很方便地将客户端触摸事件转换为云端外设事件并发送给云端,例如将客户端触摸屏上的点击事件映射为云端鼠标的点击事件。适合大多数客户直接使用,不用做复杂的开发。

MobileTouchListener

该类实现了TcrRenderView视图上的触摸事件自动转换为云端触摸屏的触摸事件,并发送到云端。触摸的坐标点值会根据视图的ScaleType进行相应计算。

使用方法

创建该对象实例,并且通过TcrRenderView#setOnTouchListener()设置给渲染视图,例如

TcrRenderView.setOnTouchListener(new MobileTouchListener(mSession));

PcTouchListener

该类实现了TcrRenderView视图上的触摸事件自动转换为云端鼠标事件,并发送到云端。PcTouchListener 实现的默认触摸行为如下

  • 单指短按: 用户在TcrRenderView按下时,向云端发送鼠标左键的按下事件,抬起时,向云端发送鼠标左键的抬起事件。
  • 单指长按: 用户在TcrRenderView按下时,向云端发送鼠标左键的按下事件,抬起时,向云端发送鼠标左键的抬起事件。
  • 单指移动: 用户在TcrRenderView移动时,给云端发送鼠标移动事件,并且移动TcrRenderView视图上的鼠标位置, 客户端可以通过PcTouchListener#setMouseConfig()函数修改鼠标移动的方式(例如相对移动、绝对移动)、移动速度,以及设置鼠标是否隐藏。
  • 单指双击: 无任何行为。
  • 双指操作: 用户在TcrRenderView上双指捏合时,可以缩放TcrRenderView;双指平移时,可以拖动TcrRenderView, 该操作不会给云端发送任何事件。

使用方法

创建该对象实例,并且通过TcrRenderView#setOnTouchListener()设置给渲染视图,例如

TcrRenderView.setOnTouchListener(new PcTouchListener(mSession));

高级用法

如果PcTouchListener实现的默认触摸行为不满足您的需要,您可以对部分默认行为进行定制修改。

  • 单指短按: 您可以实现OnClickListener接口,并通过PcTouchListener#setShortClickListener()来自定义单指短按事件的行为。如果不自定义,PcTouchListener默认是使用PcClickListener对象来响应单指短按事件。您也可以通过PcClickListener#setMouseKey()来自定义将发送到云端的鼠标按键类型。
  • 单指长按: 您可以实现OnClickListener接口,并通过PcTouchListener#setLongClickListener()来自定义单指长按事件的行为。如果不自定义,PcTouchListener默认是使用PcClickListener对象来响应单指长按事件。您也可以通过PcClickListener#setMouseKey()来自定义将发送到云端的鼠标按键类型。
  • 单指双击: 客户端可以实现OnDoubleClickListener接口并通过PcTouchListener#setDoubleClickListener()定制单指双击事件。
  • 双指操作: PcTouchListener内部使用PcZoomHandler对象来处理双指操作,客户端可以通过PcTouchListener#setZoomHandler()来自定义该行为,或者设置为null来屏蔽该行为。PcZoomHandler类进一步通过ZoomListener监听器暴露了一些定制能力。您可以通过ZoomListener#setZoomRatio()设置缩放视图的比例范围,也可以通过ZoomListener#setZoomListener()监听缩放系数以及缩放中心点。