7

У меня есть приложение, которое отлично работает на Samsung S3 работает Android 4.3, однако я уже имеющих проблемы на более Moto G работает 4.4.4Android 4.4.4 Moto G Bluetooth LE воссоединиться вопрос

Мой BLE периферические соединяется и отключается несколько раз во время использования приложений. Это прекрасно работает, однако иногда наступает момент, когда приложение/телефон больше не соединяются с периферией.

Все команды gatt запускаются в основном потоке, например.

final BluetoothGatt gat = gatt; 
Handler handler = new Handler(Looper.getMainLooper()); 
handler.post(new Runnable() { 
@Override 
public void run() { 
    // This code will be executed on the main thread 
    if (Looper.myLooper() == Looper.getMainLooper()) { 
    Log.e(TAG, "mGattCallback disconnect2: NOW ON MAIN THREAD :)"); 
    } 
    gat.disconnect(); 
    } 
}); 

и периферийные разъединители в порядке. Когда это происходит, и я не могу подключиться к периферийному больше, я получаю кучу журналов в этом, как:

04-07 16:57:56.798: I/bt-hci(2127): BLE HCI(id=62) event = 0x02) 
04-07 16:57:56.798: I/bt-hci(2127): btu_ble_process_adv_pkt 
04-07 16:57:56.833: I/bt-hci(2127): BLE HCI(id=62) event = 0x02) 
04-07 16:57:56.833: I/bt-hci(2127): btu_ble_process_adv_pkt 
04-07 16:57:56.871: I/bt-hci(2127): BLE HCI(id=62) event = 0x02) 
04-07 16:57:56.871: I/bt-hci(2127): btu_ble_process_adv_pkt 
04-07 16:57:56.906: I/bt-hci(2127): BLE HCI(id=62) event = 0x02) 
04-07 16:57:56.906: I/bt-hci(2127): btu_ble_process_adv_pkt 
04-07 16:57:56.941: I/bt-hci(2127): BLE HCI(id=62) event = 0x02) 
04-07 16:57:56.941: I/bt-hci(2127): btu_ble_process_adv_pkt 
04-07 16:57:56.977: I/bt-hci(2127): BLE HCI(id=62) event = 0x02) 
04-07 16:57:56.977: I/bt-hci(2127): btu_ble_process_adv_pkt 
04-07 16:57:57.016: I/bt-hci(2127): BLE HCI(id=62) event = 0x02) 
04-07 16:57:57.016: I/bt-hci(2127): btu_ble_process_adv_pkt 

и мне нужно, чтобы выйти из приложения, включить Bluetooth выключить и снова для того, чтобы начать работать должным образом еще раз.

Любые известные проблемы, советы или рекомендации?

Благодаря

EDIT ----------- После некоторого более тестирования, кажется, что уход приложение работает, в конце концов, я получаю следующие журналы, а затем мои периферийные могут восстановить снова:

04-13 19:11:53.973: I/bt-hci(2034): BLE HCI(id=62) event = 0x02) 
04-13 19:11:53.973: I/bt-hci(2034): btu_ble_process_adv_pkt 
04-13 19:11:54.076: I/bt-hci(2034): BLE HCI(id=62) event = 0x02) 
04-13 19:11:54.076: I/bt-hci(2034): btu_ble_process_adv_pkt 
04-13 19:11:55.986: I/bt-hci(2034): BLE HCI(id=62) event = 0x02) 
04-13 19:11:55.986: I/bt-hci(2034): btu_ble_process_adv_pkt 
04-13 19:11:56.087: I/bt-hci(2034): BLE HCI(id=62) event = 0x02) 
04-13 19:11:56.087: I/bt-hci(2034): btu_ble_process_adv_pkt 
04-13 19:11:56.629: I/bt-hci(2034): BLE HCI(id=62) event = 0x02) 
04-13 19:11:56.629: I/bt-hci(2034): btu_ble_process_adv_pkt 
04-13 19:11:56.734: I/bt-hci(2034): BLE HCI(id=62) event = 0x02) 
04-13 19:11:56.734: I/bt-hci(2034): btu_ble_process_adv_pkt 
04-13 19:11:58.925: D/MDMCTBK(275): reply_len: 40 reply is = IFNAME=wlan0 <3>CTRL-EVENT-SCAN-RESULTS 
04-13 19:11:58.925: D/MDMCTBK(275): Event received = CTRL-EVENT-SCAN-RESULTS 
04-13 19:11:58.926: D/WifiStateMachine(1010): handleMessage: E msg.what=147461 
04-13 19:11:58.926: D/WifiStateMachine(1010): processMsg: DisconnectedState 
04-13 19:11:58.926: D/WifiStateMachine(1010): processMsg: ConnectModeState 
04-13 19:11:58.926: D/WifiStateMachine(1010): processMsg: DriverStartedState 
04-13 19:11:58.927: D/WifiStateMachine(1010): processMsg: SupplicantStartedState 
04-13 19:11:58.928: D/TCMD(4253): NL - Read 56 bytes from update socket. 
04-13 19:11:58.928: D/TCMD(4253): NL - message type is RTM_NEWLINK 
04-13 19:11:58.928: D/TCMD(4253): Listening for incoming client connection request 
04-13 19:35:18.787: V/AlarmManager(1010): sending alarm Alarm{42b84cc0 type 2 com.google.android.gms} 
04-13 19:35:18.787: V/AlarmManager(1010): sending alarm Alarm{42b83a00 type 0 android} 
04-13 19:11:58.941: D/WifiStateMachine(1010): handleMessage: X 
04-13 19:12:00.615: D/WifiStateMachine(1010): handleMessage: E msg.what=131143 
04-13 19:12:00.615: D/WifiStateMachine(1010): processMsg: DisconnectedState 
04-13 19:12:00.616: D/WifiStateMachine(1010): processMsg: ConnectModeState 
04-13 19:12:00.617: D/WifiStateMachine(1010): processMsg: DriverStartedState 
04-13 19:12:00.628: D/WifiStateMachine(1010): handleMessage: X 
04-13 19:12:01.425: D/MDMCTBK(275): reply_len: 40 reply is = IFNAME=wlan0 <3>CTRL-EVENT-BSS-REMOVED 1 
04-13 19:12:01.425: D/MDMCTBK(275): Event received = CTRL-EVENT-BSS-REMOVED 1 
04-13 19:12:01.425: D/MDMCTBK(275): reply_len: 40 reply is = IFNAME=wlan0 <3>CTRL-EVENT-SCAN-RESULTS 
04-13 19:12:01.425: D/MDMCTBK(275): Event received = CTRL-EVENT-SCAN-RESULTS 
04-13 19:12:01.425: D/WifiStateMachine(1010): handleMessage: E msg.what=147461 
04-13 19:12:01.426: D/WifiStateMachine(1010): processMsg: DisconnectedState 
04-13 19:12:01.426: D/WifiStateMachine(1010): processMsg: ConnectModeState 
04-13 19:12:01.426: D/WifiStateMachine(1010): processMsg: DriverStartedState 
04-13 19:12:01.426: D/WifiStateMachine(1010): processMsg: SupplicantStartedState 
04-13 19:12:01.428: D/MDMCTBK(275): reply_len: 40 reply is = IFNAME=p2p0 <3>CTRL-EVENT-BSS-REMOVED 1 
04-13 19:12:01.428: D/MDMCTBK(275): Event received = CTRL-EVENT-BSS-REMOVED 1 
04-13 19:12:01.428: D/TCMD(4253): NL - Read 56 bytes from update socket. 
04-13 19:12:01.428: D/TCMD(4253): NL - message type is RTM_NEWLINK 
04-13 19:12:01.428: D/TCMD(4253): Listening for incoming client connection request 
04-13 19:12:01.444: D/WifiStateMachine(1010): handleMessage: X 

Это похоже, что это что-то связано с WiFi ?!

+0

в вашем коде вы отключите свой гат из условия if(). Может быть, это? – Apollo

+0

У меня будет чек, но код будет запущен в MainLooper, поэтому он всегда должен быть правдой. – Darren

+0

Gatt disconnect всегда вызывается, так что это не проблема. Я добавил изменение к моему вопросу выше. Thx – Darren

ответ

4

Я думаю, что не будет легкого ответа вроде «Использовать главную тему», и все в порядке. Но я могу дать вам несколько советов, которые собирали во время работы с паршивой BLE Android:

  • стек BT будет отличаться на разных телефонах, к сожалению, Moto G является одним из самых crappiest телефонов, если мы говорим о BLE ... как дерьмо? Плитка приложение даже государства в их F.A.Q What Android phones will Tile work with:

будет работать только с Samsung Galaxy S5, HTC One M8, HTC One, LG Nexus 4, LG Nexus 5, LG Nexus 6, Samsung Note 4, Motorola Moto X и, конечно, не будет работать с Moto G

Bluedroid continues to mature and stabilize; there were 565 commits to the bluedroid project alone from 4.4 -> 5.0, compared with 52 commits from 4.3 -> 4.4, and 47 commits from 4.2 -> 4.3.* This is an area of heavy activity within AOSP right now. 
2

Это специфическая проблема MotoG, я столкнулся с тем же на устройствах MotoG ранее. С того момента, когда Bluetooth Low Energy не была достаточно зрелой, функции Wifi и Bluetooth отрицательно влияют друг на друга на этом конкретном устройстве.

Из предыдущего R & D я сделал, не уверен, является ли это версия операционной системы & устройства определенная комбинация, но были некоторые вопросы, связанные с Bluetooth и Wi-Fi, даже больше с Bluetooth с низким энергопотреблением и Wi-Fi, многие из них были специфичными для устройства.

Относительно того, с чем вы столкнулись, есть проблемы с Проект с открытым исходным кодом для Android - Отслеживание проблем и другие блоги;

Issue 39995
Issue 41631

Nexus 5, Nexus 4 and Nexus 7 (2013) Android 4.4 Bluetooth Issues
[Хотя я не столкнулся с этой проблемой в Nexus 5]

Независимо от количества соединений, то Wi-Fi влияет Bluetooth с низким энергопотреблением. Кроме того, пересоединение и таймаут для соединения могут быть свойствами со стороны аппаратного обеспечения.

Ваш код в порядке, надеемся, что вы сэкономите некоторое время, я потратил некоторое время на это с помощью MotoG и нескольких других устройств; точно в случае низкой энергии bluetooth и интерференции Wi-Fi во время взаимодействия с устройствами, с помощью BluetoothGatt и iBeacon.

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

  • Нет связанных вопросов^_^