Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid: calling Java class from C++ Native Activity
    primarykey
    data
    text
    <p>Java code:</p> <pre class="lang-java prettyprint-override"><code> package local.ttt; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Typeface; public class Text2Bitmap { static Bitmap getBitmap(String text,int fontsize) { Paint paint=new Paint(); paint.setStyle(Paint.Style.FILL); paint.setColor(Color.WHITE); paint.setTextSize(fontsize); paint.setAntiAlias(true); paint.setTypeface(Typeface.DEFAULT); int outwidth=(int)Math.round(paint.measureText(text)); Bitmap bitmap=Bitmap.createBitmap(outwidth,fontsize,Bitmap.Config.ALPHA_8); Canvas canvas=new Canvas(bitmap); canvas.drawText(text,0,fontsize-1,paint); return bitmap; } } </code></pre> <p>C source: </p> <pre><code> ... MY_ASSERT(vm_cached!=NULL); JNIEnv* env; jint res=vm_cached->AttachCurrentThread(&env,NULL); MY_ASSERT(res==0); jclass activityClass=env->FindClass("android/app/NativeActivity"); MY_ASSERT(activityClass!=NULL); jmethodID getClassLoader=env->GetMethodID(activityClass,"getClassLoader","()Ljava/lang/ClassLoader;"); MY_ASSERT(getClassLoader!=NULL); MY_ASSERT(nativeActivityObjHnd!=NULL); jobject cls=env->CallObjectMethod(nativeActivityObjHnd,getClassLoader); jclass classLoader=env->FindClass("java/lang/ClassLoader"); MY_ASSERT(classLoader!=NULL); jmethodID findClass=env->GetMethodID(classLoader,"loadClass","(Ljava/lang/String;)Ljava/lang/Class;"); MY_ASSERT(findClass!=NULL); jstring strClassName=env->NewStringUTF("Llocal/ttt/Text2Bitmap;"); jclass text2bitmapClass=(jclass)env->CallObjectMethod(cls,findClass,strClassName); //fails here MY_ASSERT(text2bitmapClass!=NULL); res=vm_cached->DetachCurrentThread(); MY_ASSERT(res==0); ... </code></pre> <p>it fails with:</p> <pre> W/dalvikvm(5614): dvmFindClassByName rejecting 'Llocal/ttt/Text2Bitmap;' W/dalvikvm(5614): threadid=9: thread exiting with uncaught exception (group=0x4002d560) E/AndroidRuntime(5614): FATAL EXCEPTION: Thread-10 E/AndroidRuntime(5614): java.lang.ClassNotFoundException: Llocal/ttt/Text2Bitmap; in loader dalvik.system.PathClassLoader[.] E/AndroidRuntime(5614): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) E/AndroidRuntime(5614): at java.lang.ClassLoader.loadClass(ClassLoader.java:551) E/AndroidRuntime(5614): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) E/AndroidRuntime(5614): at dalvik.system.NativeStart.run(Native Method) </pre> <p>Any hint what I'm doing wrong, please?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload