Есть ли способ отправить файл, используя API-интерфейс Android для Android, используя OBEX?
Мне нужно отправить файл на принтер, поддерживающий только OBEX OPP.
Я могу отправить файл с использованием намерения android намерения ACTION_SEND на принтер без проблем, но мне нужно будет отправить его программным способом.
Я могу подключиться к принтеру bluetooth с помощью OBEX OPP UUID (1105) с помощью метода createRfcommSocketToServiceRecord(), но затем я должен следовать спецификациям obex для отправки файла с использованием OBEX.. это не так просто, как писать байты в выходной разъем.
Но если намерение ACTION_SEND может справиться с этим, почему нет разработчиков api для отправки файлов?
Я также проверил некоторые сторонние библиотеки, такие как BlueCove, но я все еще не сделал заставить его работать. (Nexus One и Galaxy Tab дают исключение, говоря, что родная библиотека bluecove_armv71 недоступна.. и LG Optimus One говорит, что bluecove_armv61 недоступен..)
Я застрял, любые идеи?
РАБОЧЕЕ РЕШЕНИЕ
Для тех, кто пытается отправить файл на устройство Bluetooth без везения, я предоставляю рабочее решение с использованием контент-провайдеров (благодаря KPBird):
Возьмите 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);
UPDATE
Некоторые люди испытывают проблемы с решением выше, оно было протестировано на следующих устройствах:
Работает на:
- LG Optimus 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 TAB P500 (Android 2.2)
- Google Nexus S (Android 4.1.2)
Если вы можете протестировать этот фрагмент на устройствах, которые не указаны выше, пожалуйста, укажите информацию о устройствах (бренд, имя, версия Android и т.д.), с которыми вы его протестировали, и результаты теста, в комментарии ниже, я обновлю вопрос, включая ваши данные.