封装jni接口
场景介绍
将指令流客户端引擎提供的六个C++接口封装成jni接口函数。
将通信模块的设置IP和端口封装成jni接口函数。
开发流程
- 封装指令流客户端引擎六个C++接口函数。
- 将通信模块的设置IP和端口封装成jni接口函数。
- 新建一个指令流引擎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);
父主题: API开发过程