Utilice IPP (Internet Printing Protocol) o LPR (Line printer Remote) para imprimir el archivo en android

Mi requisito es imprimir un archivo desde un dispositivo Android sin usar ningún servicio basado en la nube.

He podido lograrlo utilizando el protocolo de impresión "Raw", es decir, simplemente enviando el archivo a la dirección IP de la impresora en el puerto 9100 . Aquí está el fragmento de código para eso:

client = new Socket(ip,port); //Port is 9100 byte[] mybytearray = new byte[(int) file.length()]; //create a byte array to file fileInputStream = new FileInputStream(file); bufferedInputStream = new BufferedInputStream(fileInputStream); bufferedInputStream.read(mybytearray, 0, mybytearray.length); //read the file outputStream = client.getOutputStream(); outputStream.write(mybytearray, 0, mybytearray.length); //write file to the output stream byte by byte outputStream.flush(); bufferedInputStream.close(); outputStream.close(); 

El problema con el protocolo de impresión "Raw" es que no hay forma de recuperar el estado de la impresora.

Por lo tanto, recientemente he leído acerca de IPP y LDR con el que podemos obtener el estado de la impresora.

He intentado encontrar una manera de ponerlas en práctica usando android pero no tenía éxito. Ya he pasado por esta respuesta, pero no tuve éxito en encontrar mi solución.

Será realmente útil si alguien me puede guiar sobre cómo implementar IPP o LDR en android.

¡Gracias por adelantado!

    Puede usar cualquier Android-PrintService que implemente un protocolo de impresora local. No tiene que implementar IPP en su aplicación. Lamentablemente, las aplicaciones de servicio existentes parecen no funcionar perfectas. Ni la configuración ni la impresión funcionan como esperaba (en comparación con la impresión iOS).

    Si todavía desea implementar IPP, lea la respuesta de esta pregunta .

    Uso general de IPP:

    1. Una vez que se ha enviado un trabajo de impresión, la impresora devuelve un identificador de trabajo
    2. Utilice la Operación Get-Job-Attributes para obtener el estado de trabajo actual
    3. Espere hasta que el estado del trabajo de atributo sea igual a 9 (significa 'completado')

    Hay otros estados de trabajo finales que debe comprobar: abortado o cancelado

    Para la creación de prototipos se puede utilizar el ipptool (nativo para el uso de escritorio):

     # ipptool -t -d job=482 ipp://192.168.2.113/ipp job.ipp { OPERATION Get-Job-Attributes GROUP operation-attributes-tag ATTR charset attributes-charset utf-8 ATTR language attributes-natural-language en ATTR uri printer-uri $uri ATTR integer job-id $job } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.