2013-07-26 11 views
39

Szukam sposobu na wykrycie iBeacon (funkcja iOS 7.0) z urządzenia z systemem Android. Czytałem dokumentację Androida, gdzie wydaje się, że iBeacon jest jakimś rodzajem serwera GATT, który wysyła swoją pozycję. Podczas gdy dokumentacja Androida mówi, że nie powinienem sondować tych danych, ale do wykrycia tego będzie to konieczne.Połącz niską energię bluetooth iBeacon z systemem Android 4.3

Dużo google, ale ten temat jest całkiem nowy (nawet stworzyłem nowy tag ), więc byłbym szczęśliwy, gdybym uzyskał linki do zasobów ze świata iOS, które opisują implementację. Również jeśli istnieje kilka bibliotek Androida, których jeszcze nie znalazłem, byłoby fajnie.

+0

Nie jestem bardzo zaznajomiony z platformą iOS, ale czy może on obsługiwać serwer BTLE lub tylko klienta? Okazuje się, że Android BTLE obsługuje tylko klienta, mimo że dokumentacja sugeruje, że może obsługiwać serwer. Można faktycznie stworzyć serwer, ale nie może się reklamować. –

+0

iOS obsługuje serwer. Jeśli spojrzysz na obecnie publiczną próbkę AirLocate (w szczególności ALConfigurationViewController) z WWDC 2013, możesz zobaczyć, jak konfigurują serwer do anonsowania. Rzeczywisty kod do umieszczenia w reklamie jest zawarty w zastrzeżonym kodzie firmy Apple, więc trudno byłoby go replikować na systemie Android, ale jest całkowicie wykonalne, aby ustawić dowolną aplikację iOS jako iBeacon. – DesignatedNerd

+0

Z jakich urządzeń korzystałeś? To byłoby naprawdę interesujące. – MrningLemn

Odpowiedz

67

EDIT: poniżej biblioteki został zdjęty, ale biblioteka wymiana jest już dostępny tutaj:

https://github.com/AltBeacon/android-beacon-library


mam przeniesiony z SDK iOS7 iBeacon na Androida i był mogli zobaczyć standardowe iBeacony i oszacować ich zasięg. Kod jest dostępny tutaj:

https://github.com/RadiusNetworks/android-ibeacon-service

Aby to działało, trzeba Android 4.3, który wprowadził niskoenergetycznych API Bluetooth. Potrzebujesz również urządzenia z chipsetem o niskiej energii bluetooth.

Jeśli nie chcesz korzystać z pełnej biblioteki powyżej, możesz wykonać własne. iBeacons po prostu przesyłają reklamę BLE raz na sekundę, zaczynając od znanej sekwencji bajtów. Wystarczy, że powiesz Androidowi, aby wykonał skanowanie BLE, uzyskał każdą reklamę i poszukaj takiej, która zaczyna się od znanej sekwencji bajtów iBeacon. Możesz następnie przeanalizować pola iBeacon. Oto kod pokazuje jak to zrobić:

https://github.com/RadiusNetworks/android-ibeacon-service/blob/master/src/com/radiusnetworks/ibeacon/IBeacon.java#L177-L231

+1

Czy http://developer.samsung.com/ble będzie działać dla wcześniejszych wersji Androida? Zamierzam się przekonać (mam nadzieję, że raczej wcześniej niż później), ale pomyślałem, że postawię tu także pytanie. –

+0

Nie, Samsung BLE SDK to zupełnie inna implementacja niż oryginalna wersja Androida 4.3. Teoretycznie możliwe byłoby stworzenie wersji biblioteki iBeacon systemu Android, która współpracuje z pakietem Samsung BLE SDK, ale wymagałoby to przepisania jej dużej części. Biorąc pod uwagę, że większość, jeśli nie wszystkie urządzenia Samsung z BLE prawdopodobnie dostaną upgrade do Androida 4.3 w ciągu najbliższych kilku miesięcy, to po prostu nie jest warte wysiłku, aby przenieść bibliotekę Android iBeacon na SDK Samsung BLE. – davidgyoung

+0

@MarkPeterson bardzo ciekawy, czy możesz go uruchomić we wcześniejszych wersjach. –

0

Nie bardzo rozumiem, co masz na myśli, czy możesz podać linki do dokumentacji, która mówi, że nie powinieneś sondować danych?

Ale wydaje mi się, że iBeacon działa jako serwer, co jest dla mnie śmieszne. Czy nie chodzi o znalezienie innych urządzeń, a nie samego telefonu?

https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.position_quality.xml

To cechy to wykorzystuje choć. Dla mnie wygląda na to, że urządzenia, których szukasz, są "latarniami", a sam telefon jest tylko słuchaczem. Nie będziesz więc odpytywał danych EHPE i EVPE, ale powinieneś słuchać jego zmian lub "transmisji".

Jestem też trochę nowy w tym i nie mogłem znaleźć żadnej konkretnej dokumentacji.

Mimo to, w linku, który podałem, jest link do pobierania w górnym rogu, który zapewni pełną dokumentację w formacie PDF. Tam prawdopodobnie znajdziesz więcej odpowiedzi.

2

Jedynym haczykiem jest tutaj wykryć sygnał nawigacyjny nawet aplikacja nie jest uruchomiona. W przeciwieństwie do iOS7, nie jest to natywnie wsparcie. W iOS7, kiedy jesteś na swoim BT, automatycznie powiadomi cię, gdy wejdziesz do regionu zarejestrowanego iBeacon.

Zaimplementowałem iBeacon w Androidzie 4.3 API za pomocą IntentService plus AlarmManager. Aby wykonać skanowanie co 30 sekund (aby zaoszczędzić energię akumulatora, będzie ono dłuższe). Działa dobrze dla użytkownika.Dopiero po znalezieniu pasującego identyfikatora uuid/major/minor wywołają powiadomienia. W przeciwnym razie będzie spać i obudzić się w celu ponownego skanowania.

Myślę, że jest to rozwiązanie dla Twojego pytania.

+0

Znalazłem powtarzające się skany zakłócające dźwięk Blutooth. Musi być lepsza droga niż to. –

+0

Biblioteka altbeacon ma próbkę, która obejmuje uruchomienie aplikacji. http://altbeacon.github.io/android-beacon-library/samples.html –

Powiązane problemy