2017-06-07 1 views
0

Est-il possible d'imprimer sur n'importe quelle imprimante Ethernet en utilisant l'adresse IP et le port? L'idée est que nous ne voulons pas utiliser le dialogue d'impression d'android car si nous devons imprimer 1000 documents sur la même imprimante, nous sélectionnerons manuellement l'imprimante 1000 fois.Connectez et imprimez sur n'importe quelle imprimante ethernet en android en utilisant l'adresse IP

Y a-t-il un moyen d'imprimer sans contrôler manuellement l'interface?

J'ai essayé: How to connect a network printer over Android?

Mais mon imprimante est l'imprimante Ethernet et non imprimante WIFI.

+0

S'il vous plaît visitez https://stackoverflow.com/questions/6301132/how-to-connect-a-network-printer-over-android, il vous aidera à pour développer l'application et imprimer – amity

+0

La solution ci-dessus ne fonctionne pas pour moi. Mon imprimante est 'Hp Laser Jet Pro M126nw' – Ajit

+0

S'il vous plaît attendre j'ai la solution, je vais vous envoyer le code pour la même imprimante par EOD. – amity

Répondre

0

Veuillez trouver ci-dessous la classe pour l'impression 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(); 
    } 

} 

Appelez cette classe comme wifiPrinterConnection.connect()

+0

Cela ne fonctionnera pas pour les imprimantes ethernet. Je vais essayer cela pour les imprimantes wifi et vous le faire savoir. Merci – Ajit