Android JNI в C++ Builder

Я ищу использование Android JNI в C++ Builder и увидел этот код:

   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);
   }

Это код Java для печати (на термопринтере) растрового изображения, и мне нужно использовать его в C++ Builder, но я не знаю, как его преобразовать. Я видел, как intents или даже JNI делал другие вещи. Мне не нужны рекомендации или что-то в этом роде, ни готовый код (говорю это, чтобы избежать суждений, что мой вопрос для рекомендаций), но я хочу что-то вроде этого кода, чтобы помочь создать функцию.

PS: я не нашел никакой документации по Android JNI.


person Que44    schedule 26.11.2020    source источник


Ответы (1)


Это будет выглядеть примерно так:

_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);

Я не знаю, импортировал ли уже Embarcadero классы TJPrintHelper и TJBitmapFactory (выполните grep заголовочных файлов Embarcadero Androidapi...). Если нет, вы можете просто использовать Java2OP, чтобы импортировать их вручную.

Я не знаю, как перевести R.drawable.droids в среду JNI Embarcadero. decodeResource() требуется целочисленный идентификатор ресурса изображения droids. Вам придется отследить его самостоятельно.

person Remy Lebeau    schedule 27.11.2020
comment
Я видел заголовочные файлы Embarcadero Androidapi, и TJPrintHelper там нет. Когда вы говорите использовать Java2OP для их импорта вручную, где я могу получить TJPrintHelper для этого? - person Que44; 27.11.2020
comment
@Que44 Я никогда не использовал Java2OP сам, но должно быть достаточно просто сказать ему импортировать androidx.print.PrintHelper, и он сгенерирует для вас класс TJPrintHelper. - person Remy Lebeau; 27.11.2020