---
title: 初始化并注册音频引擎和触控引擎接口
description: "初始化注册音频和触控接口。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcps/boostcph/instrucstreamengine/kunpengcpsinstruction_16_0015.html
sourcePath: /source/zh/kunpengcps/boostcph/instrucstreamengine/kunpengcpsinstruction_16_0015.html
indexId: d574c5b62ba3be7c9a242a5703570f35b3c47e06f743679c9c8990dc04c2640185
---
# 初始化并注册音频引擎和触控引擎接口

#### 场景介绍

初始化注册音频和触控接口。


#### 前提条件

指令流引擎对象已创建。


#### 开发流程

1. 创建DataPipe类实现TOUCHSENDHOOK和AUDIOSENDHOOK接口。
2. 封装DataPipe的注册接口，分别注册触控引擎以及音频引擎。
3. 在TOUCHSENDHOOK和AUDIOSENDHOOK接口实现中分别调用指令流的发送触控或者音频接口方法。


#### 编码实例

```
public class Activity implements BaseActivity {
    protected void onCreate(Bundle savedInstanceState) {
        // 设置指令流引擎对象
        DataPipe.setInstructionEngine(engine);
        // 注册触控引擎
        DataPipe.registerHookToTouch();
        // 注册音频引擎
        DataPipe.registerAudioSendHook();
   }
}

public class DataPipe extends BaseDataPipe implements TOUCHSENDHOOK, AUDIOSENDHOOK {
    // 注册触控引擎接口
    public static void registerHookToTouch() {
        // 调用触控引擎注册
        int ret = VmiTouch.getInstance().registerTouchSendHook(DataPipe.getInstance());
        if (ret == VmiTouch.VMI_SUCCESS) {
            // 注册触控引擎成功
        }
    }
    // 注册音频引擎接口
    public static void registerAudioSendHook() {
        // 调用音频引擎注册
        int ret = AudioTrackPlayer.getInstance().registerAudioSendHook(DataPipe.getInstance());
        if (ret == AudioTrackPlayer.VMI_SUCCESS) {
            // 注册音频引擎成功
        }
    }
    @Override
    public void touchSendData(byte[] data, int length) {
        // 调用指令流引擎触控发送接口
        instructionEngine.sendTouchEventArray(data, length);
    }
    @Override
    public void audioSendData(byte[] data, int length) {
        //  调用录音发送接口
        instructionEngine.sendAudioDataArray(data, length);
    }
}
```
