如题,android 下 ,通过JNI 读串口的数据,现在遇到的问题是,串口随时可能传数据过来有数据就传送给JAVA,我现在是在JNI下通过while(1){}一直在读串口,但是不知道如何把数据实时的传送到JAVA层,求解该怎么做这个JNI的接口啊啊。或者是用其他的方法?? 

解决方案 »

  1.   

    在while里面调用一个java方法 把数据回传给java方法 我这有个小demo
    JNIEXPORT void JNICALL Java_cn_my_ndk_DataProvider_callCCode
      (JNIEnv * env, jobject obj){
    char* className="cn/my/ndk/DataProvider"; //声明字符串常量 ,这个常量存放的是我们的类的全路径
    //在C语言中定义JAVA中的class
    jclass clazz;
    //通过虚拟机找到className类
    clazz=(*env)->FindClass(env,className);
    //打印日志
    LOGI("HELLO");
    if(clazz==0){
    LOGI("not find class!");
    }else
    LOGI("find class");
    //得到java中的helloFromJava方法
    jmethodID java_method=(*env)->GetMethodID(env,clazz,"Add","(II)I");
    if(java_method==0){
    LOGI("not find java method!----~");
    }else
    LOGI("FIND JAVA METHOD");
    //方法返回值是void应该调用CallVoidMethod
    //(*env)->CallVoidMethod(env,obj,java_method);
    (*env)->CallIntMethod(env,obj,java_method,3,5);
    LOGI("call java");
    }