Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid: calling Java class from C++ Native Activity
    text
    copied!<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>
 

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