¿Cómo enviar datos a la impresora bluetooth va aplicación android?

Estoy desarrollando una aplicación que enviará datos a una impresora a través de bluetooth para imprimir (una impresora térmica para recibos). He seguido el código que en este enlace.

Http://pastie.org/6203514 y este enlace también http://pastie.org/6203516

Puedo ver el dispositivo y su dirección MAC y su nombre, cuando envío los datos a la impresora (el LED de luz en la impresora deja de parpadear y se convierte en estándar, es decir, la impresora está conectada con mi teléfono Android), pero cuando envío el Datos que no está imprimiendo y tampoco está dando ningún error también. He googled mucho y encontré muchos códigos y probé todo el conjunto de códigos pero no pude imprimir.

Por favor, cualquiera podría ayudarme a salir de aquí. He escuchado con Intents que se puede hacer fácilmente, pero no podía obtener la solución exacta con Intents.

Cualquier ayuda sería apreciada Gracias de antemano

Ganesh

Finalmente resolví este problema por mí mismo y el problema es que el byte de encabezado que estoy enviando a la impresora es el verdadero culpable. En realidad estoy enviando 170,1 (donde 170 es el primer byte que la impresora debe recibir y el segundo byte es el id de la impresora, me refiero a algunos COM puerto que estos dos valores son dados por el diseñador de tarjeta de control de impresora). Real tengo que enviar 170,2 donde 2 es la identificación de la impresora de modo que dé la impresión correcta y para cada impresora es común de enviar los datos basados ​​en su tarjeta de control.

Gracias a muchos amigos y aquí está mi código que u puede utilizar este código para todos los tipos de impresoras (para POS-Impresoras térmicas)

public void IntentPrint(String txtvalue) { byte[] buffer = txtvalue.getBytes(); byte[] PrintHeader = { (byte) 0xAA, 0x55,2,0 }; PrintHeader[3]=(byte) buffer.length; InitPrinter(); if(PrintHeader.length>128) { value+="\nValue is more than 128 size\n"; txtLogin.setText(value); } else { try { for(int i=0;i<=PrintHeader.length-1;i++) { mmOutputStream.write(PrintHeader[i]); } for(int i=0;i<=buffer.length-1;i++) { mmOutputStream.write(buffer[i]); } mmOutputStream.close(); mmSocket.close(); } catch(Exception ex) { value+=ex.toString()+ "\n" +"Excep IntentPrint \n"; txtLogin.setText(value); } } } 

Y este código para el resto:

 public void InitPrinter() { try { if(!bluetoothAdapter.isEnabled()) { Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBluetooth, 0); } Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices(); if(pairedDevices.size() > 0) { for(BluetoothDevice device : pairedDevices) { if(device.getName().equals("Your Device Name")) //Note, you will need to change this to match the name of your device { mmDevice = device; break; } } UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); //Standard SerialPortService ID //Method m = mmDevice.getClass().getMethod("createRfcommSocket", new Class[] { int.class }); //mmSocket = (BluetoothSocket) m.invoke(mmDevice, uuid); mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid); bluetoothAdapter.cancelDiscovery(); if(mmDevice.getBondState()==2) { mmSocket.connect(); mmOutputStream = mmSocket.getOutputStream(); } else { value+="Device not connected"; txtLogin.setText(value); } } else { value+="No Devices found"; txtLogin.setText(value); return; } } catch(Exception ex) { value+=ex.toString()+ "\n" +" InitPrinter \n"; txtLogin.setText(value); } } 

¿Está buscando un protocolo específico de impresión? (Para impresora específica?)

Si no es así, y se puede hacer una impresión genérica a cualquier impresora conectada, puede utilizar este fragmento de código:

Escribe esto donde quieras imprimir un archivo o archivos específicos:

  Intent intent = Tools.getSendToPrinterIntent( DisplayActivity.this, mPdfAsPictures, mPrintCurrentIndex); // notify the activity on return (will need to ask the user for // approvel) startActivityForResult(intent, ACTIVITY_PRINT); 

Este es el método de ayuda:

 public static Intent getSendToPrinterIntent(Context ctx, String[] fileFullPaths, int indexToPrint){ Intent sendIntent = new Intent(Intent.ACTION_SEND_MULTIPLE); // This type means we can send either JPEG, or PNG sendIntent.setType("image/*"); ArrayList<Uri> uris = new ArrayList<Uri>(); File fileIn = new File(fileFullPaths[indexToPrint]); Uri u = Uri.fromFile(fileIn); uris.add(u); sendIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); return sendIntent; } 

Y finalmente, recibirá la respuesta en:

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == ACTIVITY_PRINT) { switch (resultCode) { case Activity.RESULT_CANCELED: Log.d(TAG(), "onActivityResult, resultCode = CANCELED"); break; case Activity.RESULT_FIRST_USER: Log.d(TAG(), "onActivityResult, resultCode = FIRST_USER"); break; case Activity.RESULT_OK: Log.d(TAG(), "onActivityResult, resultCode = OK"); break; } } }; 

¡Buena suerte!

  • Bluetooth Bluetooth Pairing
  • El descubrimiento de servicio falló la excepción utilizando Bluetooth en Android
  • Android 4.0 y 4.1 problemas de Bluetooth. Detectar los comms rotos y eliminar el emparejamiento
  • Android Bluetooth Serial / RFCOMM / SPP, ¿Cómo cambiar el BAUD RATE?
  • Android BLE onCharacteristicRead y onCharacteristicChanged nunca llamado
  • ¿Puedo usar una aplicación Android para comportarme como un cliente Bluetooth A2DP? ei transmite música desde mi teléfono a una tableta Android
  • Bluetooth Secure Simple Pairing (SSP) utilizando código QR como canal fuera de banda (OOB)
  • Enviar múltiples archivos mediante bluetooth en android mediante programación
  • Sniffing / registro de su propio tráfico Bluetooth de Android
  • Intención de recibir notificación sobre el evento de conexión BLE en el periférico Android
  • ¿Cómo funciona un obturador remoto para trabajar con la cámara en Android / iOS?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.