2015-09-08 4 views
2

У меня проблема с чтением с устройства Bluetooth (GPS-Logger), через ~ 30 секунд входной поток не получает больше данных от регистратора. В timspan до соединения падает всё отлично работает (читать запись)Android Bluetooth отключает соединение без разъединения

Подключение регистратора светодиод Bluetooth сбивается и я не получаю разъединение как ACTION_ACL_DISCONNECTED или ACTION_ACL_DISCONNECT_REQUESTED или что-то другое.

LogCat приносит следовать ошибке на время, когда соединение падает:

09-08 15:24:08.219 1795-3811/com.android.bluetooth I/bt-btif﹕ btif_dm_search_services_evt: event = 2 
09-08 15:24:08.219 1795-3811/com.android.bluetooth D/bt-btif﹕ btif_dm_search_services_evt:(result=0x1, services 0x0) 
09-08 15:24:08.219 1795-3811/com.android.bluetooth D/BTIF_STORAGE﹕ prop2cfg(L239): in, bd addr:11:22:33:44:74:0e, prop type:3, len:0 
09-08 15:24:08.219 1795-3811/com.android.bluetooth E/BTIF_STORAGE﹕ ## ERROR : prop2cfg(L243): property type:3, len:0 is invalid## 
09-08 15:24:08.219 1795-3811/com.android.bluetooth E/﹕ ### ASSERT : external/bluetooth/bluedroid/main/../btif/src/btif_dm.c line 1004 storing remote services failed (1) ### 
09-08 15:24:08.219 1795-3811/com.android.bluetooth D/﹕ HAL bt_hal_cbacks->remote_device_properties_cb 
09-08 15:24:08.229 1795-3811/com.android.bluetooth E/BluetoothRemoteDevices﹕ devicePropertyChangedCallback: bdDevice: 11:22:33:44:74:0E, value is empty for type: 3 

этот вопрос приходит после этого прочтенных байт и времени соединения (время между соединением и последним прочтенных байтом)

  1. readedbytes 8783 время = 29758 мс
  2. readedbytes 9092 время = 29663 мс
  3. readedbytes 9012 время = 29745 мс
  4. readedbytes 8300 раз = 28829 мс

Может кто-нибудь мне помочь. Спасибо

ответ

1

После дня и часов я нашел решение. В первом случае у меня были проблемы с устройством Bluetooth, а тест не закрывал порт. После перезагрузки и повторного подключения устройства он работает. Другой Android устройство с Android 4.1.2 разрывает соединение через 2 секунды ;-(ahhhhhh .. ИСТ решение не вызывать в Orginal

createInsecureRfcommSocketToServiceRecord

это не работает для специальных SPP устройств решение:.

 try { 
      _logger.log(Level.FINEST,"createInsecureRfcommSocket by reflection"); 
      fSocket = (BluetoothSocket)fDevice.getClass().getMethod("createInsecureRfcommSocket", new Class[]{Integer.TYPE}).invoke(fDevice, new Object[]{Integer.valueOf(1)}); 
     } catch (NoSuchMethodException e) { 
      fSocket = null; 
     } catch (InvocationTargetException e) { 
      fSocket = null; 
     } catch (IllegalAccessException e) { 
      fSocket = null; 
     } 


     if (fSocket == null) { 
      _logger.log(Level.FINEST,"Connect over createInsecureRfcommSocketToServiceRecord"); 
      fSocket = fDevice.createInsecureRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")); 
     } 

ужасно !!! Я нашел это в счастливом случае, я надеюсь, что это помогает любому с теми же проблемами,

.

Matze

Смежные вопросы