I am designing the android application for printing from android to wireless local printer. The application is running but showing error in logcat with "Printer Could not be parsed or supported" .The printer i am using is Brother QL-710W with wireless connectivity. what's the reason behind this.
The code is as follows.
Main Activity
import android.os.Bundle;
import android.print.PrintDocumentAdapter;
import android.print.PrintManager;
import android.print.PrinterInfo;
import android.support.v4.print.PrintHelper;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void onClick(View v)
{
if(v.getId()==R.id.button1)
{
CustomDocumentAdaptor adaptor=new CustomDocumentAdaptor(getApplicationContext(), BitmapFactory.decodeResource(getResources(), R.drawable.dmg), "Mandar", "Kuch bhi");
PrintPdf("test.pdf", adaptor);
}
}
private void PrintPdf(String jobName, PrintDocumentAdapter adaptor)
{
if(PrintHelper.systemSupportsPrint())
{
PrintManager manager=(PrintManager)getSystemService(Context.PRINT_SERVICE);
manager.print(jobName, adaptor, null);
}
}
The CustomDocumentAdaptor is as follows for pdf printing
import java.io.FileOutputStream;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.pdf.PdfDocument;
import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.ParcelFileDescriptor;
import android.print.PageRange;
import android.print.PrintAttributes;
import android.print.PrintDocumentAdapter;
import android.print.PrintDocumentInfo;
import android.print.pdf.PrintedPdfDocument;
public class CustomDocumentAdaptor extends PrintDocumentAdapter
{
private Paint paint=new Paint();
private Context myContext;
private Bitmap myBitmap;
private String myName,message;
PrintedPdfDocument pdfDocument;
public CustomDocumentAdaptor(Context context,Bitmap bitmap,String Name,String msg)
{
myContext=context;
myBitmap=bitmap;
myName=Name;
message=msg;
}
@Override
public void onLayout(PrintAttributes arg0, PrintAttributes arg1, CancellationSignal arg2, LayoutResultCallback arg3, Bundle arg4)
{
pdfDocument=new PrintedPdfDocument(myContext, arg1);
if(arg2.isCanceled())
{
arg3.onLayoutCancelled();
return;
}
int pages=1;
PrintDocumentInfo info=new PrintDocumentInfo.Builder("test.pdf")
.setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT)
.setPageCount(pages).build();
arg3.onLayoutFinished(info, true);
}
@Override
public void onWrite(PageRange[] arg0, ParcelFileDescriptor arg1,
CancellationSignal arg2, WriteResultCallback arg3)
{
if(pdfDocument==null)
{
return;
}
PdfDocument.Page page=pdfDocument.startPage(0);
if(arg2.isCanceled())
{
arg3.onWriteCancelled();
pdfDocument.close();
pdfDocument=null;
return;
}
onDraw(page.getCanvas());
pdfDocument.finishPage(page);
try
{
pdfDocument.writeTo(new FileOutputStream(arg1.getFileDescriptor()));
}
catch(Exception e)
{
}
finally
{
pdfDocument.close();
pdfDocument=null;
}
arg3.onWriteFinished(arg0);
}
public void onDraw(Canvas canvas)
{
paint.setTextSize(14);
paint.setColor(Color.BLACK);
canvas.drawText(myName, 25, 25, paint);
canvas.drawBitmap(myBitmap,35,55 , paint);
}
}
The logcat is as follows
01-17 16:18:23.159: D/PRINT_LIB(20142): Response from /192.168.1.1:161
01-17 16:18:23.159: E/SnmpDiscovery(20142): Error while reading SNMP response.
01-17 16:18:23.159: E/SnmpDiscovery(20142): java.net.ProtocolException: SNMP error: 2
01-17 16:18:23.159: E/SnmpDiscovery(20142): at com.hp.mobileprint.discoveryservice.parsers.DeviceStatus.<init>(DeviceStatus.java:117)
01-17 16:18:23.159: E/SnmpDiscovery(20142): at com.hp.mobileprint.discoveryservice.SnmpDiscovery.parseResponse(SnmpDiscovery.java:78)
01-17 16:18:23.159: E/SnmpDiscovery(20142): at com.hp.mobileprint.discoveryservice.MultiProtocolDiscovery.parseResponse(MultiProtocolDiscovery.java:91)
01-17 16:18:23.159: E/SnmpDiscovery(20142): at com.hp.mobileprint.printservice.tasks.LocalPrinterDiscoveryTask.processIncomingPacket(LocalPrinterDiscoveryTask.java:177)
01-17 16:18:23.159: E/SnmpDiscovery(20142): at com.hp.mobileprint.printservice.tasks.LocalPrinterDiscoveryTask.receiveResponsePackets(LocalPrinterDiscoveryTask.java:136)
01-17 16:18:23.159: E/SnmpDiscovery(20142): at com.hp.mobileprint.printservice.tasks.LocalPrinterDiscoveryTask.doInBackground(LocalPrinterDiscoveryTask.java:77)
01-17 16:18:23.159: E/SnmpDiscovery(20142): at com.hp.mobileprint.printservice.tasks.LocalPrinterDiscoveryTask.doInBackground(LocalPrinterDiscoveryTask.java:51)
01-17 16:18:23.159: E/SnmpDiscovery(20142): at android.os.AsyncTask$2.call(AsyncTask.java:288)
01-17 16:18:23.159: E/SnmpDiscovery(20142): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
01-17 16:18:23.159: E/SnmpDiscovery(20142): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
01-17 16:18:23.159: E/SnmpDiscovery(20142): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
01-17 16:18:23.159: E/SnmpDiscovery(20142): at java.lang.Thread.run(Thread.java:841)
01-17 16:18:23.159: W/PRINT_LIB(20142): Printer could not be parsed or is not supported.
01-17 16:18:23.159: D/PRINT_LIB(20142): Response from /192.168.1.1:161
01-17 16:18:23.169: E/SnmpDiscovery(20142): Error while reading SNMP response.
01-17 16:18:23.169: E/SnmpDiscovery(20142): java.net.ProtocolException: SNMP error: 2
01-17 16:18:23.169: E/SnmpDiscovery(20142): at com.hp.mobileprint.discoveryservice.parsers.DeviceStatus.<init>(DeviceStatus.java:117)
01-17 16:18:23.169: E/SnmpDiscovery(20142): at com.hp.mobileprint.discoveryservice.SnmpDiscovery.parseResponse(SnmpDiscovery.java:78)
01-17 16:18:23.169: E/SnmpDiscovery(20142): at com.hp.mobileprint.discoveryservice.MultiProtocolDiscovery.parseResponse(MultiProtocolDiscovery.java:91)
01-17 16:18:23.169: E/SnmpDiscovery(20142): at com.hp.mobileprint.printservice.tasks.LocalPrinterDiscoveryTask.processIncomingPacket(LocalPrinterDiscoveryTask.java:177)
01-17 16:18:23.169: E/SnmpDiscovery(20142): at com.hp.mobileprint.printservice.tasks.LocalPrinterDiscoveryTask.receiveResponsePackets(LocalPrinterDiscoveryTask.java:136)
01-17 16:18:23.169: E/SnmpDiscovery(20142): at com.hp.mobileprint.printservice.tasks.LocalPrinterDiscoveryTask.doInBackground(LocalPrinterDiscoveryTask.java:77)
01-17 16:18:23.169: E/SnmpDiscovery(20142): at com.hp.mobileprint.printservice.tasks.LocalPrinterDiscoveryTask.doInBackground(LocalPrinterDiscoveryTask.java:51)
01-17 16:18:23.169: E/SnmpDiscovery(20142): at android.os.AsyncTask$2.call(AsyncTask.java:288)
01-17 16:18:23.169: E/SnmpDiscovery(20142): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
01-17 16:18:23.169: E/SnmpDiscovery(20142): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
01-17 16:18:23.169: E/SnmpDiscovery(20142): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
01-17 16:18:23.169: E/SnmpDiscovery(20142): at java.lang.Thread.run(Thread.java:841)
01-17 16:18:23.169: W/PRINT_LIB(20142): Printer could not be parsed or is not supported.
01-17 16:18:23.169: D/PRINT_LIB(20142): Response from /192.168.1.35:5353
01-17 16:18:23.169: D/BonjourParser(20142): Found PDL service without support for HP PCL: Brother QL-710W._pdl-datastream._tcp.local