Mam trochę kodu C++ opartego na NDK, który potrzebuje do zbudowania obiektu bitmapowego Android. Jestem pewien, że istnieje sposób, aby to zrobić bezpośrednio z kodu C++ ale nie jest najłatwiejsze rzeczy do zrobienia;)Tworzenie pliku android.graphics.Bitmap z C++
Więc metoda chcę zadzwonić to
Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Więc to zrobić z natywnego kodu muszę wykonać następujące kroki.
- Znajdź klasę (android.graphics.Bitmap).
- Uzyskaj statyczny identyfikator metody "createBitmap".
- Utwórz wyliczenie.
- Wywołanie metody statycznej.
(W końcu będę musiał utworzyć jintArray i przekazać dane, ale o to później się martwię).
Jestem bardzo zagubiony na krokach 2 i 3 chociaż. Mój kod wygląda teraz tak:
jclass jBitmapClass = gpEnv->FindClass("android.graphics.Bitmap");
jmethodID jBitmapCreater = gpEnv->GetStaticMethodID(jBitmapClass, "createBitmap", "(IILandroid/graphics/Bitmap/Config;)Landroid/graphics/Bitmap;");
, ale potem utknąłem. Jak utworzyć wyliczenie z natywnego kodu C/C++?
Co więcej, mój ostatni parametr w GetStaticMethodID jest poprawny? Nie byłem pewien, jak określić konkretne obiekty, ale myślę, że powyższe działa. Jednak może być źle na wyliczeniu!
Z góry dziękuję.
Ahh genialne użycie ukośników zamiast "." W moim FindClassie jest samo w sobie ratujące życie !! :) – Goz
Twój kod spowodował awarię, ale kiedy zmieniłem ciąg konfiguracyjny, zadziałało: jobject java_bitmap_config = env-> CallStaticObjectMethod (bcfg_class, midValueOf, env-> NewStringUTF ("ARGB_8888")); –
jako, że env jest wskaźnikiem, musisz również zmienić "env."do" env-> " – Tertium