Próbuję stworzyć aplikację korzystającą z nowego interfejsu API Bluetooth Low Energy w systemie Android. W tym celu zacząłem od przykładu BLE pochodzącego z poziomu API 18 .
Kiedy przeczytałem, że Android nie może działać jako urządzenie peryferyjne, ustawiam telefon z Androidem w trybie centralnym, skanując w poszukiwaniu urządzeń BLE wokół niego. W tym celu przeprowadziłem testy na platformie Nordic symulującej czujnik serca. Wszystko działa perfekcyjnie!
Następnie próbuję wybrać iPhone'a (iOS 7 beta 4) i ustawić go w sposób peryferyjny i symulować czujnik tętna, tak jak w poprzednim teście. Aplikacja na Androida może zobaczyć urządzenie i połączyć się z nim. Ale po aktywowaniu połączenia 2 urządzenia rozłączają się od siebie w ciągu 3-4 sekund. Oprócz tego, kiedy wywołuję DiscoverServices () po stronie Androida, żadne wywołanie zwrotne nie jest wyzwalane! W niektórych przypadkach urządzenie z systemem Android odbiera zdarzenie „Połączono”, nawet jeśli układ Bluetooth iOS jest wyłączony. To jest bardzo dziwne. Aby to udowodnić, przestawiłem Nordic Board w tryb centralny i udało mi się bez problemu połączyć się z urządzeniem iOS.
Co to mogło być? Istnieją pewne ograniczenia w systemie Android lub iOS, które nie pozwalają na połączenie z Androida na iOS lub odwrotnie?
Dzięki.
EDYCJA: Po kilku trudnych testach zgłosiłem problem na stronie AOSP. Można to sprawdzić tutaj