我想写一个自定义的android打印服务。我遵循以下博客中提到的说明: https://github.com/zaki50/MyPrintServiceProjectAndroid打印使用自定义打印服务
我能够创建一个服务,它执行打印作业。但是在作业没有打印任何东西之后。我的问题是,我们应该提供什么localId。它是打印机IP,名称?还有什么办法可以知道打印作业不起作用的原因。 基本上这两种方法,我担心正在增加onStartPrinterDiscovery和OnPrintJobQueue如下所述:
@Override
public void onStartPrinterDiscovery(List<PrinterId> priorityList) {
String str = Settings.Secure.getString(getBaseContext().getContentResolver(), "enabled_print_services");
Log.d("myprinter", "PrinterDiscoverySession#onStartPrinterDiscovery(priorityList: " + priorityList + ") called")
final List<PrinterInfo> printers = new ArrayList<>();
final PrinterId printerId = generatePrinterId("D8:49:2F:64:04:DB");
final PrinterInfo.Builder builder = new PrinterInfo.Builder(printerId, "D8:49:2F:64:04:DB", PrinterInfo.STATUS_IDLE);
PrinterCapabilitiesInfo.Builder capBuilder = new PrinterCapabilitiesInfo.Builder(printerId);
capBuilder.addMediaSize(PrintAttributes.MediaSize.NA_LETTER, true);
capBuilder.addMediaSize(PrintAttributes.MediaSize.NA_LETTER, false);
capBuilder.addResolution(new PrintAttributes.Resolution("resolutionId", "default resolution", 600, 600), true);
capBuilder.setColorModes(PrintAttributes.COLOR_MODE_COLOR | PrintAttributes.COLOR_MODE_MONOCHROME, PrintAttributes.COLOR_MODE_COLOR);
builder.setCapabilities(capBuilder.build());
printers.add(builder.build());
addPrinters(printers);
}
@Override
protected void onPrintJobQueued(PrintJob printJob) {
Log.d("myprinter", "queued: " + printJob.getId().toString());
printJob.start();
//printJob.complete();
final PrintDocument document = printJob.getDocument();
final FileInputStream in = new FileInputStream(document.getData().getFileDescriptor());
try {
final byte[] buffer = new byte[4];
@SuppressWarnings("unused")
final int read = in.read(buffer);
Log.d("myprinter", "first " + buffer.length + "bytes of content: " + toString(buffer));
} catch (IOException e) {
Log.d("myprinter", "", e);
} finally {
try {
in.close();
} catch (IOException e) {
assert true;
}
}
if(printJob.isStarted()){
printJob.complete();
}
}
我的问题是应该怎样printerId(或LOCALID)。我们如何知道,如果将打印作业成功或失败
请在SO上发布时添加代码示例。 –
我编辑的问题与代码示例,我需要更多的信息。 –
你看过使用打印管理器和适配器吗? https://developer.android.com/training/printing/custom-docs.html#print-manager –