Android JNI Intro - Java Call Jni Example

 

  MainActivity.java

public native int nativePushCameraData(byte[]data, int len);



Native-lib.cpp

extern "C"
JNIEXPORT int JNICALL
Java_com_example_MainActivity_nativePushCameraData(
JNIEnv *env,
jobject /* this */,
jbyteArray buf, jint len
) {
uint8_t * data;

data = (uint8_t *)env->GetByteArrayElements(buf, 0);

magics::TaskNode *node = gfreeQueue.Dequeue();
if(node == nullptr) {
node = gtaskQueue.Dequeue();
if(node == nullptr) return 0;
}

magics::TaskZone *zone = node->mTaskZone;
zone->tasktype = magics::enum_task_data;
zone->datatype = magics::enum_data_rgb;
memcpy(zone->vframe, data, len);


gtaskQueue.EnqueueWithSignal(node);

env->ReleaseByteArrayElements(buf, (jbyte *)data, 0);

return 0;
}

posted on 2017-12-11 19:28  fanbird2008  阅读(99)  评论(0)    收藏  举报

导航