---
title: 封装JNI接口
description: "将指令流客户端引擎提供的六个C++接口封装成JNI接口函数。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcps/boostcph/instrucstreamengine/kunpengcpsinstruction_16_0012.html
sourcePath: /source/zh/kunpengcps/boostcph/instrucstreamengine/kunpengcpsinstruction_16_0012.html
indexId: f48a729e13fe219aa6c3e82788d4165973cb76aaaf439189481891f310eec76785
---
# 封装JNI接口

#### 场景介绍

将指令流客户端引擎提供的六个C++接口封装成JNI接口函数。

将通信模块的设置IP地址和端口封装成JNI接口函数。


#### 开发流程

1. 封装指令流客户端引擎六个C++接口函数。
2. 将通信模块的设置IP地址和端口封装成JNI接口函数。
3. 新建一个指令流引擎JNI回调对象。


#### 编码实例

```
// 封装指令流引擎的六个接口
#define INSTUCTION_JNI(func) Java_com_huawei_instructionstream_appui_engine_InstructionWrapper_##func
// 函数名对应的指令流引擎API接口的函数名
JNIEXPORT jint JNICALL INSTUCTION_JNI(initialize)(JNIEnv* env, jclass cls);
JNIEXPORT jint JNICALL INSTUCTION_JNI(start)(JNIEnv* env, jclass cls, jobject surface, jint width, jint height, jfloat densityDpi);
JNIEXPORT void JNICALL INSTUCTION_JNI(stop)(JNIEnv* env, jclass cls);
JNIEXPORT jstring JNICALL INSTUCTION_JNI(getStat)(JNIEnv* env, jclass cls);
JNIEXPORT jint JNICALL INSTUCTION_JNI(recvData)(JNIEnv* env, jclass cls, jbyte type, jbyteArray jData, jint length);

// 以下为发送函数封装接口，用户可以根据需求封装不同的接口
JNIEXPORT jboolean JNICALL INSTUCTION_JNI(sendAudioDataArray)(JNIEnv* env, jclass cls, jbyteArray jData, jint length);
JNIEXPORT jboolean JNICALL INSTUCTION_JNI(sendTouchEventArray)(JNIEnv* env, jclass cls, jbyteArray jData, jint length);
JNIEXPORT jboolean JNICALL INSTUCTION_JNI(sendKeyEvent)(JNIEnv* env, jclass cls,jbyteArray jData, jint length);

// 封装指令流引擎回调事件
#define CB_JNI(func) Java_com_huawei_instructionstream_appui_engine_JniCallBack_##func
JNIEXPORT void JNICALL CB_JNI(setNativeCallback)(JNIEnv* env, jobject obj);

// 封装通信模块接口
#define NET_CONFIG_JNI(func) Java_com_huawei_instructionstream_appui_maincontrol_NetConfig_##func
JNIEXPORT jboolean JNICALL NET_CONFIG_JNI(initialize)(JNIEnv* env, jclass cls);
// 设置通信模块的IP地址和端口
JNIEXPORT jboolean JNICALL NET_CONFIG_JNI(setNetConfig)(JNIEnv* env, jclass cls, jstring ip, jint port, jint type);
```
