是否可以使用IP地址和端口在任何以太网打印机上打印?这个想法是我们不想使用Android的打印对话框,因为如果我们必须在同一打印机上打印1000个文档,我们将手动选择1000次打印机。
有没有手动控制接口的打印方法?
我尝试过:如何通过Android连接网络打印机?
但是我的打印机是以太网打印机,而不是wifi打印机。
请在下面找到WiFi打印的类。
public abstract class WifiPrinterConnection extends AsyncTask<Void, Void, Void> {
private byte[] printData;
@Override
protected void onPreExecute() {
super.onPreExecute();
//place your progress dialog
}
@Override
protected Void doInBackground(final Void... params) {
try {
final Socket socket = new Socket();
socket.connect(new InetSocketAddress(InetAddress.getByName(((WifiPrintingEntity)this.connectionEntity).getIp()), ((WifiPrintingEntity)this.connectionEntity).getPort()),
((WifiPrintingEntity)this.connectionEntity).getTimeout());
LOGGER.info(PrinterLoggerMessage.WIFI_PRINTER_CONNECTION_SUCCESS);
final OutputStream outputStream = socket.getOutputStream();
final byte[] data = this.printData;
LOGGER.info(PrinterLoggerMessage.PRINTING_STARTED);
outputStream.write(data, 0, data.length);
outputStream.close();
socket.close();
entity.setSuccessful(true);
LOGGER.info(PrinterLoggerMessage.SOCKET_CLOSE);
} catch (final IOException e) {
LOGGER.error(e.getMessage(),e);
} catch (final Exception ee) {
}
return null;
}
@Override
public void connection(final PrintingEntity connectionEntity, final IConnectionResponse listner,final byte[] data) {
this.connectionEntity = connectionEntity;
this.printData = data;
this.response = listner;
this.execute();
}
}
称此类为wifiPrinterConnection.connect()