Я пытаюсь создать собственный плагин PrintService для Android, и у меня есть все, кроме того, что он не отображается в списке принтеров в разделе «Все принтеры» и говорит «Не удается добавить принтеры» в моей службе печати, если Я нажимаю «Добавить принтер» вручную. Я скачал этот сервис печати , который отображается в списке принтеров, но я не могу понять, чем отличается их код от моего.
Мой класс PrintService:
public class MyPrintService extends PrintService {
PrinterInfo mThermalPrinter;
@Override
public void onCreate() {
mThermalPrinter = new PrinterInfo.Builder(generatePrinterId("USB"),
"USB Printer", PrinterInfo.STATUS_IDLE).build();
}
@Override
protected void onPrintJobQueued(PrintJob printJob) {
Intent intent = new Intent(MyPrintService.this, MainActivity.class);
intent.putExtra("data", printJob.getDocument().getData());
printJob.start();
startActivity(intent);
}
@Nullable
@Override
protected PrinterDiscoverySession onCreatePrinterDiscoverySession() {
return new ThermalPrinterDiscoverySession(mThermalPrinter);
}
@Override
protected void onRequestCancelPrintJob(PrintJob printJob) {
printJob.cancel();
}
}
class ThermalPrinterDiscoverySession extends PrinterDiscoverySession {
private PrinterInfo printerInfo;
ThermalPrinterDiscoverySession(PrinterInfo printerInfo) {
PrinterCapabilitiesInfo capabilities =
new PrinterCapabilitiesInfo.Builder(printerInfo.getId())
.addMediaSize(PrintAttributes.MediaSize.ISO_A5, true)
.addResolution(new PrintAttributes.Resolution("1234","Default",200,200), true)
.setColorModes(PrintAttributes.COLOR_MODE_MONOCHROME, PrintAttributes.COLOR_MODE_MONOCHROME)
.build();
this.printerInfo = new PrinterInfo.Builder(printerInfo)
.setCapabilities(capabilities)
.build();
}
@Override
public void onStartPrinterDiscovery(List<PrinterId> priorityList) {
List<PrinterInfo> printers = new ArrayList<PrinterInfo>();
printers.add(printerInfo);
addPrinters(printers);
}
@Override
public void onStopPrinterDiscovery() {
}
@Override
public void onValidatePrinters(List<PrinterId> printerIds) {
}
@Override
public void onStartPrinterStateTracking(PrinterId printerId) {
}
@Override
public void onStopPrinterStateTracking(PrinterId printerId) {
}
@Override
public void onDestroy() {
}
}
Спасибо!