Impresión de Android directamente a la impresora de red?

Hii en mi aplicación Quiero enviar mis datos directamente a mi impresora de red desde mi teléfono Android para imprimirlo. ¿Cómo puedo hacer eso?

También quiero proporcionar especificaciones como diseño, copias, rango de páginas, etc. ¿Cómo puedo detectar mis impresoras directamente desde mi teléfono Android y también dar comandos de impresión?

Sólo tiene que enviar su doccument a la impresión de nube de google. Aquí está el código que he usado para imprimir. El doccument se guarda en almacenamiento externo y está en formato pdf. El único requisito es que tanto el dispositivo como la impresora inalámbrica deben estar en la misma red. Si la impresora está cableada, el dispositivo android y el sistema conectado a la impresora deben estar conectados con la misma cuenta de google.

PrintManager printManager = (PrintManager) Order_Bag.this.getSystemService(Context.PRINT_SERVICE); String jobName = Order_Bag.this.getString(R.string.app_name) + " Document"; //printManager.print(jobName, pda, null); pda = new PrintDocumentAdapter(){ @Override public void onWrite(PageRange[] pages, ParcelFileDescriptor destination, CancellationSignal cancellationSignal, WriteResultCallback callback){ InputStream input = null; OutputStream output = null; try { input = new FileInputStream(Environment.getExternalStorageDirectory() + "/hello.pdf"); output = new FileOutputStream(destination.getFileDescriptor()); byte[] buf = new byte[1024]; int bytesRead; while ((bytesRead = input.read(buf)) > 0) { output.write(buf, 0, bytesRead); } callback.onWriteFinished(new PageRange[]{PageRange.ALL_PAGES}); } catch (FileNotFoundException ee){ //Catch exception } catch (Exception e) { //Catch exception } finally { try { input.close(); output.close(); } catch (IOException e) { e.printStackTrace(); } } } @Override public void onLayout(PrintAttributes oldAttributes, PrintAttributes newAttributes, CancellationSignal cancellationSignal, LayoutResultCallback callback, Bundle extras){ if (cancellationSignal.isCanceled()) { callback.onLayoutCancelled(); return; } // int pages = computePageCount(newAttributes); PrintDocumentInfo pdi = new PrintDocumentInfo.Builder("The invoice").setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT).build(); callback.onLayoutFinished(pdi, true); } }; printManager.print(jobName, pda, null); 
  • Bloque sincronizado: son variables "dentro" de otras variables actualizadas
  • No entiendo cómo utilizar GridLayout.spec ()
  • @SuppressWarnings vs @SuppressLint
  • ¿Cómo adjuntar el archivo XML en el cuerpo del mensaje de solicitud de correos HTTP?
  • Utilizar Enhanced For Loop Syntax está generando resultados más lentos
  • Después de un fallo en el suministro de energía, ya no puedo compilar la aplicación
  • Se pierde la biblioteca del sistema JRE de Android (java.awt. *)
  • Obtener la estructura de clase de un proyecto android
  • Intentando ejecutar un proyecto de Android en IntelliJ: Error: Terminación del proceso de compilación anormal: Error: Esta instancia de Java no admite una JVM de 32 bits.
  • TabWidget parpadea cuando el teclado oculta android
  • API de datos de Youtube: Obtenga acceso al flujo multimedia ya la reproducción (JAVA)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.