首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过QAndroidJniObject调用android活动方法

通过QAndroidJniObject调用android活动方法
EN

Stack Overflow用户
提问于 2021-12-27 13:09:33
回答 1查看 70关注 0票数 0

大家好,我想把这个方法称为"printTextTemplate ()“,从一个activity通过QAndroidJniObject转到Qt,但是我无法让它工作。下面是我的java类

代码语言:javascript
复制
package org.qtproject.example.activityhandler;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;

import android.bld.print.configuration.PrintConfig;
import com.example.lc_print_sdk.PrintUtil;
import com.google.zxing.BarcodeFormat;

import org.qtproject.example.activityhandler.utils.BitmapUtils;
import org.qtproject.example.activityhandler.R;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

public  class CustomActivity extends Activity {

    PrintUtil printUtil;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_activity);

        printUtil=PrintUtil.getInstance (this);
        //printUtil.setPrintEventListener (this);
        printUtil.printEnableMark (false);



        Button backButton = (Button) findViewById(R.id.backButton);
        backButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {

                String sessionId = "Hello Alioune";
                Intent inputIntent = getIntent();
                sessionId = inputIntent.getStringExtra("message");

                //printTextTemplate();
                Intent resultIntent = new Intent();
                resultIntent.putExtra("message", sessionId);
                setResult(Activity.RESULT_OK, resultIntent);
                finish();
            }
        });
    }

    public void printTextTemplate() {

       BitmapDrawable drawable=(BitmapDrawable) getResources ().getDrawable (R.drawable.a);
       Bitmap bitmap=BitmapUtils.compressPic(drawable.getBitmap(), 350, 160);
       printUtil.printBitmap(bitmap);

       printUtil.printText (PrintConfig.Align.ALIGN_CENTER, PrintConfig.FontSize.TOP_FONT_SIZE_MIDDLE, false, false, "------------------------------------------------------\n");

       printUtil.printText (PrintConfig.Align.ALIGN_CENTER, PrintConfig.FontSize.TOP_FONT_SIZE_LARGE, true, true, "CONTROL ROUTIER\n");

       printUtil.printText (PrintConfig.Align.ALIGN_CENTER, PrintConfig.FontSize.TOP_FONT_SIZE_MIDDLE, false, false, "------------------------------------------------------\n");

       printUtil.printText (PrintConfig.Align.ALIGN_LEFT, PrintConfig.FontSize.TOP_FONT_SIZE_MIDDLE, false, false, "Référence:\n\n");
       printUtil.printText (PrintConfig.Align.ALIGN_LEFT, PrintConfig.FontSize.TOP_FONT_SIZE_MIDDLE, false, false, "Date:\n\n");
       printUtil.printText (PrintConfig.Align.ALIGN_LEFT, PrintConfig.FontSize.TOP_FONT_SIZE_MIDDLE, false, false, "Validité:\n\n");
       printUtil.printText (PrintConfig.Align.ALIGN_LEFT, PrintConfig.FontSize.TOP_FONT_SIZE_MIDDLE, false, false, "Agent:\n");
       printUtil.printLine (1);


       printUtil.printText (PrintConfig.Align.ALIGN_CENTER, PrintConfig.FontSize.TOP_FONT_SIZE_MIDDLE, false, false, "------------------------------------------------------\n");

       printUtil.printText (PrintConfig.Align.ALIGN_CENTER, PrintConfig.FontSize.TOP_FONT_SIZE_LARGE, true, true, "CAMIONS\n");

       printUtil.printText (PrintConfig.Align.ALIGN_CENTER, PrintConfig.FontSize.TOP_FONT_SIZE_MIDDLE, false, false, "------------------------------------------------------\n");

       printUtil.printText (PrintConfig.Align.ALIGN_LEFT, PrintConfig.FontSize.TOP_FONT_SIZE_MIDDLE, false, false, "Immatriculation:\n\n");
       printUtil.printText (PrintConfig.Align.ALIGN_LEFT, PrintConfig.FontSize.TOP_FONT_SIZE_MIDDLE, false, false, "Chauffeur:\n\n");
       printUtil.printText (PrintConfig.Align.ALIGN_LEFT, PrintConfig.FontSize.TOP_FONT_SIZE_MIDDLE, false, false, "Produit Chargé:\n");

       printUtil.printLine (1);


       printUtil.printText (PrintConfig.Align.ALIGN_CENTER, PrintConfig.FontSize.TOP_FONT_SIZE_MIDDLE, false, false, "------------------------------------------------------\n");

       printUtil.printText (PrintConfig.Align.ALIGN_CENTER, PrintConfig.FontSize.TOP_FONT_SIZE_LARGE, true, true, "CONFIRMATION\n");

       printUtil.printText (PrintConfig.Align.ALIGN_CENTER, PrintConfig.FontSize.TOP_FONT_SIZE_MIDDLE, false, false, "------------------------------------------------------\n");

       BitmapDrawable drawable1=(BitmapDrawable) getResources ().getDrawable (R.drawable.b);
       Bitmap bitmap1=BitmapUtils.compressPic(drawable1.getBitmap(), 300, 300);
       printUtil.printBitmap(bitmap1);

       printUtil.printLine (1);

       printUtil.printText (PrintConfig.Align.ALIGN_CENTER, PrintConfig.FontSize.TOP_FONT_SIZE_MIDDLE, false, false, "------------------------------------------------------\n");

       printUtil.printText (PrintConfig.Align.ALIGN_CENTER, PrintConfig.FontSize.TOP_FONT_SIZE_LARGE, true, true, "POSTE DE DOUANE BITOU\n");

       printUtil.printText (PrintConfig.Align.ALIGN_CENTER, PrintConfig.FontSize.TOP_FONT_SIZE_MIDDLE, false, false, "------------------------------------------------------\n");

       printUtil.printLine (8);
       printUtil.start ();
   }

}

下面是在Qt中调用的方法

void::printTextTemplate(){

代码语言:javascript
复制
QAndroidJniObject javaClass =
QAndroidJniObject("org/qtproject/example/activityhandler/CustomActivity",
"(Landroid/content/Context;Landroid/app/Activity;)V",
QtAndroid::androidContext().object<jobject>(),
QtAndroid::androidActivity().object<jobject>());

javaClass.callMethod("printTextTemplate");}

EN

回答 1

Stack Overflow用户

发布于 2022-02-17 15:15:34

您似乎在调用QAndroidJniObject的构造函数。

相反,您应该尝试如下:

代码语言:javascript
复制
void ActivityHandler::printTextTemplate(){
  QAndroidJniObject activity = QtAndroid::androidActivity();
  if (activity.isValid()) {
    activity.callObjectMethod("printTextTemplate");
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70495913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档