大家好,我想把这个方法称为"printTextTemplate ()“,从一个activity通过QAndroidJniObject转到Qt,但是我无法让它工作。下面是我的java类
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(){
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");}
发布于 2022-02-17 15:15:34
您似乎在调用QAndroidJniObject的构造函数。
相反,您应该尝试如下:
void ActivityHandler::printTextTemplate(){
QAndroidJniObject activity = QtAndroid::androidActivity();
if (activity.isValid()) {
activity.callObjectMethod("printTextTemplate");
}
}https://stackoverflow.com/questions/70495913
复制相似问题