Reputation: 101
Im trying to print a image in Brother SDK in my app.
this is my code:
`myPrinterInfo = myPrinter.getPrinterInfo();
myPrinterInfo.printerModel = PrinterInfo.Model.QL_810W;
myPrinterInfo.port = PrinterInfo.Port.NET;
myPrinterInfo.printMode = PrinterInfo.PrintMode.FIT_TO_PAGE;
myPrinterInfo.paperSize = PrinterInfo.PaperSize.CUSTOM;
myPrinterInfo.labelNameIndex = 5;
myPrinterInfo.isAutoCut = false;
myPrinterInfo.isCutAtEnd = false;
myPrinterInfo.orientation = PrinterInfo.Orientation.PORTRAIT;
myPrinterInfo.valign = PrinterInfo.VAlign.TOP;
myPrinterInfo.align = PrinterInfo.Align.LEFT;
myPrinterInfo.halftone = PrinterInfo.Halftone.THRESHOLD;
myPrinterInfo.ipAddress = "192.168.1.146";
myPrinterInfo.thresholdingValue = 127;
myPrinterInfo.pjCarbon = false;
myPrinterInfo.pjDensity = 5;
myPrinterInfo.pjFeedMode = PrinterInfo.PjFeedMode.PJ_FEED_MODE_FIXEDPAGE;
myPrinterInfo.pjPaperKind = PJ_CUT_PAPER;
myPrinterInfo.rollPrinterCase = PrinterInfo.PjRollCase.PJ_ROLLCASE_OFF;
myPrinterInfo.paperPosition = PrinterInfo.Align.CENTER;
myPrinterInfo.numberOfCopies = 1;
Im using the 62mmx100mm paper roll and I got this error message:
JNI DETECTED ERROR IN APPLICATION: GetStringUTFChars received NULL jstring 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: in call to GetStringUTFChars 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: from boolean com.brother.ptouch.sdk.JNIWrapper.writeByteInFile(int[], int, java.lang.String, boolean) 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: "AsyncTask #1" prio=5 tid=10 Runnable 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: | group="main" sCount=0 dsCount=0 obj=0x12c99460 self=0xe9594500 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: | sysTid=31584 nice=10 cgrp=bg_non_interactive sched=0/0 handle=0xe0b65930 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: | state=R schedstat=( 80462688 29252686 258 ) utm=5 stm=3 core=2 HZ=100 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: | stack=0xe0a63000-0xe0a65000 stackSize=1038KB 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: | held mutexes= "mutator lock"(shared held) 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: native: #00 pc 0035adcf /system/lib/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiPKcPNS_9ArtMethodEPv+126) 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: native: #01 pc 0033bdeb /system/lib/libart.so (_ZNK3art6Thread4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+138) 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: native: #02 pc 0024ef71 /system/lib/libart.so (ZN3art9JavaVMExt8JniAbortEPKcS2+900) 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: native: #03 pc 0024f607 /system/lib/libart.so (_ZN3art9JavaVMExt9JniAbortVEPKcS2_St9__va_list+54) 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: native: #04 pc 000fbe5d /system/lib/libart.so (_ZN3art11ScopedCheck6AbortFEPKcz+28) 08-10 17:33:18.882 31333-31584/br.com.squarebits.brothertest E/art: native: #05 pc 001003b9 /system/lib/libart.so (_ZN3art11ScopedCheck5CheckERNS_18ScopedObjectAccessEbPKcPNS_12JniValueTypeE.constprop.95+2676) 08-10 17:33:18.883 31333-31584/br.com.squarebits.brothertest E/art: native: #06 pc 00108cd5 /system/lib/libart.so (_ZN3art8CheckJNI17GetStringUTFCharsEP7_JNIEnvP8_jstringPh+376)
If anyone knows how to fix it, please help me :(
Upvotes: 4
Views: 1594
Reputation: 953
Here is a list of steps I've done in order to make the printing functional and get rid of this error. I am using the newest Brother SDK 4.6.4.
1. AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2. Runtime request for permission
if (context.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 8);
}
3. build.gradle
targetSdkVersion = 32
(lowering to 32 helped me to show the permissions popup on a newer device)
4. [This one did the trick] Adding workPath
to printer info
PrinterInfo printInfo = printer.getPrinterInfo();
printInfo.workPath = "storage/emulated/0/Download/";
Brothers at Brother should work on that developer experience. I hope this helps!
Upvotes: 0
Reputation: 91
I had a similar problem today, it turns out the android.permission.WRITE_EXTERNAL_STORAGE permission was not granted. If you are running on and Android 6 or greater, check your run time permissions for writing to the external storage. Declaring the permission in the manifest is not enough. The brother documentation hints at this at the end of their manual.
8.3. Android 6 compatibility Since Android 6.0, Users are allowed to change the application’s permissions after installation. Permission to access Android external storage must be granted to use this application.
Upvotes: 6