使用NDK(Android)压缩调用函数

使用NDK(Android)压缩调用函数,android,android-ndk,java-native-interface,Android,Android Ndk,Java Native Interface,我想在NDK部分中使用以下代码 OutputStream fOut = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut); fOut.flush(); fOut.close(); 我开始这样编写NDK函数: void compress(JNIEnv* env, jobject fOut){ jclass bitmapCompressFormat = (*env)->F

我想在NDK部分中使用以下代码

OutputStream fOut = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
fOut.flush();
fOut.close();
我开始这样编写NDK函数:

void compress(JNIEnv* env, jobject fOut){

  jclass bitmapCompressFormat = (*env)->FindClass(env,"android/graphics/Bitmap$CompressFormat");
  jfieldID CFFieldID = (*env)->GetStaticFieldID(env,bitmapCompressFormat, "JPEG","Landroid/graphics/Bitmap$CompressFormat;");
  jobject CFObj = (*env)->GetStaticObjectField(env,bitmapCompressFormat, CFFieldID);

}
但是我被卡住了,我应该使用CallObjectMethod吗

PS:位图是NDK代码中的全局变量


非常感谢

这是最新的更新版本:

jobject bitmap_array[10];

void compress(JNIEnv* env, jobject *fOut){

jclass bitmapCompressFormat = (*env)->FindClass(env,"android/graphics/Bitmap$CompressFormat");
jfieldID CFFieldID = (*env)->GetStaticFieldID(env,bitmapCompressFormat, "JPEG","Landroid/graphics/Bitmap$CompressFormat;");
jobject CFObj = (*env)->GetStaticObjectField(env,bitmapCompressFormat, CFFieldID);

jmethodID compressBitmapMethodID = (*env)->GetMethodID(env,bitmap_array[0],"compress","(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z");

(*env)->CallBooleanMethod(env,bitmap_array[0], compressBitmapMethodID, CFObj, (jint)100, *fOut);

}

--------------------- SDK --------------------------
public native void compress(OutputStream fOut);
...
OutputStream fOut = new FileOutputStream(file);
compress(fOut);
我在logcat中没有错误消息,当我调用方法“compress”时,活动关闭

谢谢你的帮助