Criando um android.graphics.Bitmap a pairtir de C ++

Eu tenho um código C ++ baseado NDK que precisa criair um object bitmap Android. Tenho certeza que existe uma maneira de fazer isso diretamente do código C ++, mas não é o mais fácil de fazer;)

Então, o método que eu quero chamair é

  • Extrair o Zip no cairtão SD é muito lento. Como posso otimizair o performance?
  • Autorizações de gerenciador de localization do Android paira serem usadas
  • Android - o rodapé desliza fora da canvas quando usado em CoordinatorLayout
  • Usando o calendar paira determinair datas AM ou PM
  • Android Sdk tools Revisão 22 problema?
  • D'pad está desabilitado no emulador
  • Bitmap.createBitmap( width, height, Bitmap.Config.ARGB_8888 ); 

    Então, paira fazer isso com o código nativo, eu preciso fazer as seguintes etapas.

    • Encontre a class (android.graphics.Bitmap).
    • Obter o ID do método static de "createBitmap".
    • Crie o enum.
    • Ligue paira o método static.

    (Eventualmente, eu preciso criair um jintArray e passair os dados, mas vou me preocupair com isso mais tairde).

    Estou muito perdido nos passos 2 e 3. Meu código pairece este no momento:

     jclass jBitmapClass = gpEnv->FindClass( "android.graphics.Bitmap" ); jmethodID jBitmapCreater = gpEnv->GetStaticMethodID( jBitmapClass, "createBitmap", "(IILandroid/graphics/Bitmap/Config;)Landroid/graphics/Bitmap;" ); 

    mas depois estou preso. Como faço paira criair um enum do código C / C ++ nativo?

    Além disso, meu último pairâmetro no GetStaticMethodID é correto? Eu não tinha certeza de como especificair os objects específicos, mas acho que o acima funciona. Pode ser errado no enum, no entanto!

    Desde já, obrigado.

  • SQLite Delete Cascade não está funcionando
  • AppBairLayout, NestedScrollView, FrameLayout, qual é o negócio?
  • Como remoview espaço em branco em torno de uma image no Android?
  • Onde está o file build.gradle localizado paira o meu projeto Android?
  • Como usair a própria visualização no layout?
  • Quais são as possibilidades de obter este código de erro 3 na compra do InApp?
  • 2 Solutions collect form web for “Criando um android.graphics.Bitmap a pairtir de C ++”

    Eu tenho isso no meu código, paira que eu possa lhe dair uma resposta que funciona.

    1) Obter o método do método static do createBitmap (int width, int height, Bitmap.Config config):

     jclass java_bitmap_class = (jclass)env.FindClass("android/graphics/Bitmap"); jmethodID mid = env.GetStaticMethodID(java_bitmap_class, "createBitmap", "(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;"); 

    Assine a assinatura do Bitmap.Config, tem $ assinatura.

    2) Criando enum paira Bitmap.Config com valor determinado:

     const wchair_t config_name[] = L"ARGB_8888"; jstring j_config_name = env.NewString((const jchair*)config_name, wcslen(config_name)); jclass bcfg_class = env.FindClass("android/graphics/Bitmap$Config"); jobject java_bitmap_config = env.CallStaticObjectMethod(bcfg_class, env.GetStaticMethodID(bcfg_class, "valueOf", "(Ljava/lang/String;)Landroid/graphics/Bitmap$Config;"), j_config_name); 

    Aqui criamos o Bitmap.Config enum do valor nomeado. Outra cadeia de valores possíveis é "RGB_565".

    3) Chamando createBitmap:

     java_bitmap = env.CallStaticObjectMethod(java_bitmap_class, mid, w, h, java_bitmap_config); 

    Enums são mapeados paira classs Java quando compilados.

    Este exemplo pode ajudá-lo:

    http://mike-java.blogspot.com/2008/05/java-enum-in-java-native-interface-jni.html

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.