Поэтому я думаю, что некоторые телефоны не совместимы с этими кодами BluetoothShare ...

ли способ отправить файл с помощью Android API Bluetooth с помощью 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-класспо каналу Bluetooth изВот

Затем следующий код отправляет файл с 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);

ОБНОВИТЬ

Некоторые люди испытывают проблемы с решением, описанным выше, оно было протестировано на следующих устройствах:

Работает на:

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 и т. д.), с которой вы его тестировали, и результаты теста, в комментарии ниже, я буду обновлять вопрос, включая ваши данные.

Ответы на вопрос(4)

Ваш ответ на вопрос