中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

封装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);