---
title: 获取客户端触控数据
description: "通过触控引擎客户端提供的API，用户可以获取到客户端产生的触控数据，并将其发送出去。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2300/armnative/kunpengcpsvideo_16_0035.html
sourcePath: /source/zh/kunpengboostkithistory/2300/armnative/kunpengcpsvideo_16_0035.html
indexId: 4d0bd145741e1e2397e3b5dcf5225e7708115e29c9c4cf90d00f3b1bb3f3988e77
---
# 获取客户端触控数据

#### 场景介绍

通过触控引擎客户端提供的API，用户可以获取到客户端产生的触控数据，并将其发送出去。


#### 前提条件

触控引擎客户端依赖于Android的View。


#### 开发流程

1. 用户注册客户端触控数据发送hook函数。
2. 触控引擎客户端继承自Android的View.OnTouchListener，需要用户调用Android View层的setOnTouchListener接口。
3. 在调用上述接口的入参View.OnTouchListener()中的onTouch方法中调用触控引擎客户端的onTouch方法。


#### 编码实例

具体场景

依据开发流程，通过调用触控引擎客户端API，获取View产生的触控数据，并发送到服务端。

代码样例

```
import android.util.Log;
import android.view.View;
import com.huawei.cloudgame.touch.TOUCHSENDHOOK;
import com.huawei.cloudgame.touch.VmiTouch;
public class DataPipe implements TOUCHSENDHOOK{
private static DataPipe instance = new DataPipe();
private DataPipe() {
}
public static DataPipe getInstance() {
return instance;
}
public void touchSendData(byte[] data, int length) {
// 发送接口的具体实现，由用户自己实现
}
public static void registerHookToTouch() {
int ret = VmiTouch.getInstance().registerTouchSendHook(DataPipe.getInstance());
if (ret != VmiTouch.VMI_SUCCESS) {
Log.e("TouchClient", "register touch send hook fail");
}
}
}
public class Test {
public static void main(String[] args) {
DataPipe.registerHookToTouch();
View view = getDisplayView() // 示意函数：获取客户端显示的View。
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
return VmiTouch.getInstance().onTouch(view, event);
}
});
}
}
```
