我有一些基于NDK的C++代码需要构建一个android位图对象。我敢肯定有一种方法可以直接从C++代码做到这一点,但它不是最简单的事情做;)从C++创建android.graphics.Bitmap
所以我要调用的方法是
Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
因此,要做到这一点从本机代码我需要执行以下步骤。
- 查找类(android.graphics.Bitmap)。
- 获取“createBitmap”的静态方法ID。
- 创建枚举。
- 调用静态方法。
(最终我需要创建一个jintArray并传入数据,但后面我会担心)。
虽然步骤2和步骤3我很迷茫。我的代码目前看起来像这样:
jclass jBitmapClass = gpEnv->FindClass("android.graphics.Bitmap");
jmethodID jBitmapCreater = gpEnv->GetStaticMethodID(jBitmapClass, "createBitmap", "(IILandroid/graphics/Bitmap/Config;)Landroid/graphics/Bitmap;");
但后来我卡住了。如何从本地C/C++代码创建枚举?
此外,我的最后一个参数GetStaticMethodID正确吗?我不知道如何指定特定的对象,但我认为上述工作。虽然在枚举上可能是错误的!
在此先感谢。
Ahh辉煌的使用斜线而不是“。”在我的FindClass中本身就是一个救星! :) – Goz
您的代码导致崩溃,但是当我将配置字符串更改为此时,它工作: jobject java_bitmap_config = env-> CallStaticObjectMethod(bcfg_class,midValueOf,env-> NewStringUTF(“ARGB_8888”));作为env的 –
是一个指针,你也需要改变“env。“env->” – Tertium