Можно ли как-нибудь отправить файл с помощью API Android Bluetooth через OBEX?
Мне нужно отправить файл на принтер, который поддерживает только OBEX OPP.
Я могу отправитьфайл с помощью Android-намерения ACTION_SEND на принтер без проблем, но мне нужно было бы отправить его программно.
Я могу подключиться к Bluetooth-принтеру, используя OBEX OPP UUID (1105) с методом createRfcommSocketToServiceRecord (), но тогда я должен следовать спецификациям obex для отправки файла с использованием OBEX .. это не так просто, как запись байтов в выходной сокет ..
Но если намерение ACTION_SEND может с этим справиться, почему нет 'Есть ли какие-либо API-интерфейсы для разработчиков, чтобы отправлять файлы?
Я также проверил некоторые сторонние библиотеки, такие как BlueCove, но я все еще не заставил его работать .. (Nexus One и Galaxy Tab выдают исключение, говоря, что nativeбиблиотека bluecove_armv71 недоступна ... а LG Optimus One говорит, что bluecove_armv61 недоступна ..)
я застрял, есть идеи?
РАБОЧЕЕ РЕШЕНИЕ
Для тех, кто безуспешно пытается отправить файл на устройство Bluetooth, я предоставляю работающее решение с использованием контент-провайдеров (благодаря KPBird):
Grab theкласс java BluetoothShare из здесь
Затем следующий код отправляет файл с SD-карты на устройство 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);
ОБНОВЛЕНИЕ
У некоторых людей возникают проблемы с решением, описанным выше, оно было протестировано на следующих устройствах:
Работает на:
- LGOptimus One (Android 2.1)
- HTC Desire (Android 2.2)
- Google Nexus One (Android 2.2 и 2.3)
- Samsung Galaxy S2 (Android 4.0.3)
- HTC Amaze (Android 2.3.4)
Имеются проблемы с:
- LG P500 (Android 2.3.3)
- Galaxy TABP500 (Android 2.2)
- Google Nexus S (Android 4.1.2)
Если вы можете протестировать этот фрагмент на устройствах, которые не указаны в спискеbove, пожалуйста, предоставьте информацию об устройствах (бренд, имя, версия для Android и т. д.), с которыми вы его тестировали, и результаты теста, в комментарии ниже, я обновлю вопрос, включая вашданные.