native 调用 java 类中的一个静态方法

java类com.test.ViewerActivity中有个静态方法:

public static void sendAudioData(byte[] bytes,int size){

}

怎么在native层调用它呢? 这不是玩哦,是项目需求,要把AudioRecorder录下来的音频数据传到java 层,然后在java层发送到服务器去。


   jclass cls = (jclass) jni_env->NewGlobalRef(jni_env->FindClass(
            "com/test/ViewerActivity"));     //注意这里对应类的全程包名!!!!

   jmethodID  send_audio_data = jni_env->GetStaticMethodID(cls, "sendAudioData", "([BI)V");      //注意方法签名!
   jbyteArray  aes_bytes = jni_env->NewByteArray(80);


  //准备工作做好了,马上看如何调用:


  jni_env->SetByteArrayRegion(aes_bytes, 0,80, (jbyte *)cipher);    //将本地类型的cipher转换成jbyteArray

  jni_env->CallStaticIntMethod(cls, send_audio_data, aes_bytes,(jint)contentLength); 

你可能感兴趣的:(java,工作,jni,服务器,byte,audio)