Android JNI in C++ Builder

204 Views Asked by At

I'm searching for using Android JNI on C++ Builder, and I saw this code:

   private void doPhotoPrint() {
       PrintHelper photoPrinter = new PrintHelper(getActivity());
       photoPrinter.setScaleMode(PrintHelper.SCALE_MODE_FIT);
       Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
               R.drawable.droids);
       photoPrinter.printBitmap("droids.jpg - test print", bitmap);
   }

That's a Java code to print (in a thermal printer) a bitmap and I need to use it in C++ Builder, but I don't have idea how to convert it. I saw doing other things by intents or even JNI. I don't want recommendations or something, neither a done code (saying this to avoid judgments that my question is for recommendations), but I want something like this code to help create a function.

PS: I didn't found any documentation about Android JNI.

1

There are 1 best solutions below

2
On

It would look something like this:

_di_JPrintHelper photoPrinter = TJPrintHelper::JavaClass->init(TAndroidHelper::Activity);
photoPrinter->setScaleMode(TJPrintHelper::JavaClass->SCALE_MODE_FIT);
_di_JBitmap bitmap = TJBitmapFactory::JavaClass->decodeResource(TAndroidHelper::Context->getResources(), /*R.drawable.droids*/...);
photoPrinter->printBitmap(StringToJString("droids.jpg - test print"), bitmap);

I don’t know if Embarcadero has already imported the TJPrintHelper and TJBitmapFactory classes (do a grep of Embarcadero’s Androidapi... header files). If not, you can simply use Java2OP to import them manually.

I don’t know how to translate R.drawable.droids to Embarcadero’s JNI framework. decodeResource() wants the integer resource ID of the droids image. You will have to track that one down yourself.