2013-10-31 14 views
14

Do Androida 4.3 urządzenie z Androidem obsługujące technologię Bluetooth Low Energy może działać tylko jako urządzenie centralne. Jak podano w Android 4.3 Bluetooth LE docs:Czy Android KitKat pozwala urządzeniom obsługującym Bluetooth LE działać jako urządzenie peryferyjne?

Android 4.3 (API Level 18) wprowadza wbudowane wsparcie platformy dla technologii Bluetooth Low Energy w centralnej roli i dostarcza API, które aplikacje mogą wykorzystać do odkryć urządzeń, zapytania do usługi i cechy odczytu/zapisu.

Czy po wprowadzeniu Android 4.4 KitKat może on również działać jako urządzenie peryferyjne? Nie mogłem znaleźć żadnej dokumentacji tego. Jeśli nie, to czy musimy poczekać na system Android 4.5, aby uzyskać tryb urządzeń peryferyjnych BTLE na urządzeniu z Androidem? Czy istnieje inny sposób, w jaki urządzenie z Androidem może działać jako urządzenie peryferyjne?

+0

Jeszcze nie zgaduję: https://code.google.com/p/android/issues/detail?id=59693 – Slartibartfast

+0

Dziękuję kolego. Ta prośba była przed wydaniem wersji 4.4. Skomentowałem również, że mam nadzieję, że zobaczę pewne zmiany w 4.4. Czy wiesz, czy możliwy jest inny sposób? –

+0

Nie jestem pewien, czy można obejść to niestety, to, że peryferia jest bardziej związana z architekturą sieci/sprzętem. Może możesz zajrzeć do serwera/klienta GATT i spróbować coś zhakować (niezbyt polecane, ale hej zepsute razy dobrze :)). Ale wygląda ponuro, dopóki nie wyjdzie na zewnątrz. – Slartibartfast

Odpowiedz

10

Dziękuję wszystkim za odpowiedzi. Aktualizacja tylko w czerwcu 2014 roku jest oferowana w podglądzie programisty Android L. Mam nadzieję, że zobaczę to w oficjalnym wydaniu Android L. Z ich blogu New in Android: L Developer Preview and Google Play Services 5.0:

L Developer Preview, pozwala odkrywać wiele nowych funkcji i możliwości kolejnej wersji Androida i oferuje wszystko, czego potrzeba, aby zacząć opracowywanie i testowanie na nowej platformie. Oto niektóre z najważniejszych wydarzeń dla programistów:

tryb peryferyjny BLE - urządzenia z Androidem mogą teraz działać w Bluetooth Low Energy (BLE) trybie obwodowym. Aplikacje mogą używać tej funkcji do nadawania swojej obecności na urządzenia w pobliżu - na przykład możesz teraz tworzyć aplikacje, które pozwalają urządzeniu działać jako krokomierz lub monitor zdrowia i przesyłać dane do innego urządzenia BLE.

Aktualizacja:

Złą wiadomością jest to, że tryb peryferyjny BLE działa tylko na nowszych urządzeniach z Androidem (wg daty), a mianowicie Nexus 6 i Nexus 9. To nie będzie działać na Nexus 4/Nexus 5/nexus 7/nexus 10, nawet jeśli zaktualizujesz go do Androida 5.0. Możesz przeczytać comment przez jednego z Menedżera projektów Androida na bilecie BLE advertise mode not working. Mówi:

Wprowadziliśmy tryb peryferyjny BLE w systemie Android 5.0 Lollipop. Nexus 6 i Nexus 9 to pierwsze dwa produkcyjne urządzenia Nexus obsługujące tryb peryferyjny BLE. Ze względu na zależność od chipsetu sprzętowego starsze urządzenia Nexus (4/5/7) nie będą miały dostępu do funkcji Lollipopa.

7

http://developer.android.com/sdk/api_diff/19/changes.html

Patrząc na pełnej różnicy api, odpowiedź w skrócie: NIE

==============

Aby dodać obsługę roli peryferyjnego teraz musisz zabrudzić sobie ręce, aby dostosować stos Bluedroid na poziomie systemu operacyjnego lub spróbować szczęścia u programistów XDA, aby sprawdzić, czy ktoś już to zrobił. Nie jestem jednak pewien, czy bieżąca funkcja telefonu Android obsługuje rolę peryferyjną na poziomie sprzętu.

+0

Dzięki reTs. Czy możesz odpowiedzieć na drugą część, proszę. Czy jest jakikolwiek alternatywny sposób, by zrobić to samo, co wiesz lub może być? –

+0

@Puri Zobacz moją zmianę. Jednak nie ma zbyt wielkiej nadziei. – reTs

+1

Bezwstydna wtyczka, ale zrobiliśmy trochę pracy, aby to umożliwić, ale wymaga to niestandardowej pamięci ROM, być może część pracy może zostać przeniesiona do rozwiązania opartego na NDK: http://blog.cozybit.com/enabling-peripheral- mode-in-android-kitkat-4-4 - zauważysz, że na dole zwracamy uwagę, że mistrz AOSP już ma na to wsparcie, więc Android 4.5/5.0 będzie miał na to wsparcie. – silverjam

17

Nie w tej wersji, ale istnieją dowody na to, że już wkrótce.
Jeśli spojrzysz na BluetoothGatt.java w źródłach android-19, są nowe metody listen i setAdvData, których nie było w Androidzie-18.
Jednak nie są one udokumentowane, ponieważ nie sądzę, że obsługa natywna jest jeszcze ukończona. Ostatnia kontrola AOSP dla trybu peryferyjnego nosiła tytuł "LE: Dodaj obsługę ról peryferyjnych (2/4)". Również setAdvData i listen mieć ten kod:

if (mContext == null || !mContext.getResources().getBoolean(com.android.internal.R.bool.config_bluetooth_le_peripheral_mode_supported)) 
{ 
    throw new UnsupportedOperationException("BluetoothGatt#listen is blocked"); 
} 

patrząc w android/platform_frameworks_base/blob/master/core/RES/RES/wartości/config.xml ze źródeł Android można zobaczyć ten jest obecnie wyłączone:

<!-- Boolean indicating if current platform supports BLE peripheral mode --> 
<bool name="config_bluetooth_le_peripheral_mode_supported">false</bool> 
+0

Czy wiesz, jak odczytać tę wartość (na przykład: config_bluetooth_le_peripheral_mode_supported) z pliku config.xml? – anticafe

Powiązane problemy