使用IP地址在Android中的任何以太网打印机上连接并打印



是否可以使用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()