¿Hay alguna forma de enviar un archivo utilizando la API de Android con bluetooth usando OBEX?Envío de un archivo utilizando Bluetooth OBEX Object Push Profile (OPP)
Necesito enviar un archivo a una impresora que solo admita OBEX OPP.
puedo enviar el archivo con la intención ACTION_SEND androide a la impresora sin problemas, pero me gustaría que enviar mediante programación ..
puedo conectar a la impresora Bluetooth usando OBEX OPP UUID (1105) con el método createRfcommSocketToServiceRecord(), pero entonces debería seguir las especificaciones obex para enviar un archivo usando OBEX ... no es tan simple como escribir bytes en el socket de salida ...
Pero si la intención ACTION_SEND puede manejar esto, ¿Por qué no hay ninguna API para que los desarrolladores envíen los archivos?
También comprobé algunas librerías de terceros como Bluecove, pero todavía no lo hicieron conseguir que funcione .. (Nexus Galaxy Tab & una excepción diciendo que bluecove_armv71 biblioteca nativa no está disponible .. y LG Optimus Uno dice que bluecove_armv61 no está disponible ...)
Estoy atascado, ¿alguna idea?
solución de trabajo
Para cualquiera que trate de enviar un archivo a un dispositivo Bluetooth sin suerte, que proporciona una solución de trabajo utilizando los proveedores de contenidos (gracias a KPBird):
Coge la clase java BluetoothShare de here
Than, el código siguiente se envía un archivo en la tarjeta SD a un dispositivo Bluetooth:
BluetoothDevice device;
String filePath = Environment.getExternalStorageDirectory().toString() + "/file.jpg";
ContentValues values = new ContentValues();
values.put(BluetoothShare.URI, Uri.fromFile(new File(filePath)).toString());
values.put(BluetoothShare.DESTINATION, device.getAddress());
values.put(BluetoothShare.DIRECTION, BluetoothShare.DIRECTION_OUTBOUND);
Long ts = System.currentTimeMillis();
values.put(BluetoothShare.TIMESTAMP, ts);
Uri contentUri = getContentResolver().insert(BluetoothShare.CONTENT_URI, values);
ACTUALIZACIÓN
Algunas personas están experimentando problemas con la solución anterior, se ha probado en los siguientes dispositivos:
Obras en:
- LG Optimus One (Android 2.1)
- HTC Desire (Android 2.2)
- Google Nexus One (Android 2.2 y 2.3)
- Samsung Galaxy S2 (Android 4.0.3)
- HTC Amaze (Android 2.3.4)
tiene problemas en:
- LG P500 (Android 2.3.3)
- Galaxy TAB P500 (Android 2.2)
- Google Nexus S (Android 4.1.2)
Si usted es capaz de probar este fragmento en dispositivos que no están en la lista, por favor proporcionan los detalles de los dispositivos (marca, nombre, versión androide, etc ..) con el que se puso a prueba , y los resultados de las pruebas, en un comentario a continuación, actualizaré la pregunta, incluidos sus datos.
Hola ShadowCloud, En el código anterior, una vez que el contentUri está poblado, donde sucede el dispositivo Bluetooth Push ?? No veo ningún código para eso ... –
Este código no funciona en OS de 4.1 en adelante – Harish