我有一些基於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