2013-12-02 5 views
3

Сейчас я создаю приложение для Android, которое общается с некоторыми медицинскими устройствами через Bluetooth, чтобы отображать результаты экзаменов на смартфоне, и у меня есть эта странная проблема:Отключено соединение Bluetooth с защищенным гнездом rfcomm (работает с небезопасным)

createRfcommSocketToServiceRecord (UUID) работы и подключает телефон к устройствам на Android 2.1 - 3.x (Galaxy SI, Galaxy SII и пара других таблеток), но не работу на андроид 4.x (Galaxy SIII, Galaxy Trend). Я получаю сообщение об отказе Connection. Однако, небезопасные соединения createInsecureRfcommSocketToServiceRecord (UUID) отлично работает для всех этих версий, за исключением, конечно, 2.1, поскольку небезопасные соединение было введено в уровне API 10.

Каждый имеет какие-либо идеи, почему это происходит именно так? Связано ли это с аппаратным/драйвером, или я просто делаю что-то неправильно. И да, я должен поддерживать Android 2.1.

+0

HI Я искал небезопасную связь между устройством Bluetooth для Android и устройством RFID Bluetooth, поэтому, пожалуйста, поделитесь исходным кодом, если у вас есть или руководство для меня, как это сделать. – shiva

ответ

2

Google заменил код Bluetooth Bluetooth на другую версию в Android 4.2. Эта удаленная поддержка сокетов L2CAP и других функций. Вероятно, это причина того, что вы видите различия. Я использую createInsurecureRfcommSocket() для всех версий Android (2.3 и выше), и, похоже, он работает нормально. Вместо подключения на основе служебной записи я ищу конкретные имена устройств Bluetooth в списке парных устройств, а затем подключаюсь к этому адресу на канале 1.

Вот упрощенный вид кода (не показаны попытки/уловы):

BluetoothDevice btDevice = mBluetoothAdapter.getRemoteDevice(btTargetAddress); 
m = btDevice.getClass().getMethod("createInsecureRfcommSocket", new Class[] { int.class }); 
mSocket = (BluetoothSocket)m.invoke(btDevice, 1); 
Смежные вопросы