2012-04-06 25 views
28

Próbuję znaleźć sposób do pracy z urządzeniami Bluetooth 4.0 (aka Bluetooth Smart) przy użyciu nowoczesnych smartfonów z Androidem, a mianowicie - HTC One V.Obsługa Bluetooth Smart (4.0)/GATT w systemie Android 4.0?

Jak zrozumiałem, istnieje pewne problemy z wykorzystaniem GATT profil nawet w Androidzie 4.0 ze sprzętem Bluetooth 4.0 ze względu na ograniczenia interfejsu API.

Widziałem Motorola wydała swoje własne API dla BT LE, ale na pewno nie będzie pracować dla innych producentów. Moim celem jest uzyskanie uniwersalnego wsparcia dla wszystkich smartfonów z odpowiednim sprzętem.

żadnych sugestii roztworu wysoko cenione.

Alexey

PS: Tak, widziałem Android API dla HDP, ale wydaje się być używany tylko z 'klasycznych' urządzeń Bluetooth (nie tych niskich energii, podobnie jak BT LE).

+1

Firma Samsung opublikowała pakiet [Bluetooth BLE SDK (beta)] (http://developer.samsung.com/ble). Zobacz to pytanie http://stackoverflow.com/questions/11104708/bluetooth-4-0-smart-low-energy-on-samsung-galaxy-s3 – OneWorld

+0

Oto oficjalne oświadczenie na temat BLE od pracowników Google w najnowszym https IO : //developers.google.com/events/io/sessions/326240948 Wszystkie urządzenia ze sprzętem 4.3 i BLE będą miały oficjalne API systemu Android BLE, co zostało zademonstrowane podczas tej sesji wideo. – OneWorld

Odpowiedz

0

Jak odkryto, 4.3 posiada wsparcie dla BLE, ale jest tak uszkodzony, zwłaszcza na urządzeniach Nexus. Moim zdaniem nie jest on gotowy do produkcji.

26

Niestety brak rodzimych GATT Android API po prostu dlatego, że Android nie obsługuje Bluetooth Low Energy w ogóle. Może się to zmienić w nadchodzących wydaniach Androida, ale dzisiaj producenci zamiast tego integrują stosy Bluetooth innych firm z obsługą Low Energy od dostawców takich jak Qualcomm, Broadcom lub CSR. Są one dostarczane z ich własnym zestawem interfejsów API, co oczywiście ogranicza kompatybilność ze zbiorem telefonów korzystających ze stosu danego dostawcy. Dobrą wiadomością jest to, że na innych platformach, takich jak iOS czy Windows 8 istnieją natywne API GATT BLE, a te są dobrze obsługiwane. W przypadku Androida będziemy musieli poczekać, aż Google zdecyduje się zintegrować pracę Linux/BlueZ wykonaną na BLE z Androidem.

+0

Dziękuję. Czy możesz podać dostawców, którzy oferują niestandardowe zestawy SDK BT LE Android dla swoich platform?(z wyjątkiem Motorola) – AlexeyVMP

+0

Cześć Alexey. Chociaż nie chcę publicznie mówić o konkretnych sprzedawcach, zwykle wystarczy przejrzeć publicznie dostępną stronę internetową poświęconą kwalifikacji Bluetooth (https://www.bluetooth.org/tpg/listings.cfm), aby zobaczyć, kto zakwalifikowuje się pod względem stosy dla Androida. Spróbuj Zaawansowane wyszukiwanie, a następnie ogranicz wersję specyfikacji do 4.0 (możesz też spróbować 4.0 + HS), a następnie poszukaj Androida lub znanych dostawców. – introiboad

+0

Zapomniałem wspomnieć, że można również szukać konkretnych telefonów i ich wykazów kwalifikacji i zazwyczaj odnoszą się one do QID (Qualification ID) stosu, którego używają, co pozwala dopasować konkretne modele telefonów do sprzedawców stosów. – introiboad

13

Po niektórych badań mogę powiedzieć tylko to:

  • Motorola jednostronna z Broadcom opracowanie zastrzeżonych API. Wydaje się, że jest bardzo ograniczony, ponieważ stwierdza, że ​​istnieje wsparcie tylko dla istniejących profili. Sprawdź to here.

  • Samsung nie udostępnia żadnych informacji dotyczących interfejsu API BLE, , które mogę zweryfikować i nazywa się samsung.bluetoothle. W rzeczywistości dekompilowałem niektóre aplikacje z Google Play, które korzystają z funkcji BLE SGSIII i znalazłem kilka metod, które nie istnieją w natywnym interfejsie API BT Androida, a ich nazwy wyraźnie wskazują, że są powiązane z BLE. Próbowałem używać ich poprzez odbicie Java i obecnie pracuję nad możliwością tworzenia biblioteki. Ale testy, które przeprowadziłem do tej pory, miały w najlepszym wypadku świetne wyniki. Jest też wątek na forum programistów Samsunga, sugerowałbym pewną presję: here, jeśli jesteś zainteresowany.

  • Google dokonał prawie żadnych uwag w tym aspekcie. Jest thread dotyczących tej kwestii w Galaxy Nexus, który należy gwiazda, z dużą ilością ludzi narzekających. Najbliższą rzeczą odpowiedź Google można znaleźć here.

[UPDATE]

Samsung również zmodyfikowane kilka klas Android, bardziej especifically:

  • BluetoothAdapter
  • BluetoothDevice

[UPDATE]

Odkąd umieścić ten problem na bok na chwilę ze względu na brak wsparcia ze strony Google i Samsung wyślę czego się nauczyłem do tej pory:

BluetoothAdapter nowych metod:

public boolean android.bluetooth.BluetoothAdapter.leTestEnd() 
public boolean android.bluetooth.BluetoothAdapter.setAvStreaming(boolean) 
public boolean android.bluetooth.BluetoothAdapter.setScanLE(boolean) 
public void android.bluetooth.BluetoothAdapter.setScoPathChange(int) 
public boolean android.bluetooth.BluetoothAdapter.startLeDiscovery() 

wykorzystać je wykonać następujące czynności:

BluetoothAdapter ba = new BluetoothAdapter(); 
Method starteLeDiscoveryMethod = null; 
starteLeDiscoveryMethod = ba.class.getMethod("startLeDiscovery"); 
starteLeDiscoveryMethod.invoke(ba); 

UWAGA: Ta metoda w poszczególnych robót nieco przypominająca regularny startDiscovery() metoda, ale, przynajmniej dla mnie, odkrywa urządzenie BLE 2 z 5 razy. I zapamiętaj, to jest tylko dla SGSIII. Nie udało mi się wydobyć nowych metod w BluetoothDevice, ale kiedy to zrobię, opublikuję je tutaj.

+0

Mogę potwierdzić, że ten kod działa na Androidzie 4.1.1 Samsung SGIII. Jakieś dalsze odkrycia rodkarom? – BBaker

+0

Prawdopodobnie w przyszłym tygodniu będę musiał opracować rozwiązanie "na miarę platformy" dla BLE na Androidzie. Czy masz jakąś próbkę kodu, która może mi pomóc w mojej misji? Nie ma tyle, ile chcę w Internecie. – Mamsaac

+0

Przykro mi z góry, że nie można opracować rozwiązania opartego na różnych platformach. Pamiętaj, że jedyne możliwości to API Mototoli i to, co do tej pory zebrałem. –

1

HTC ma wsparcie BLE od zeszłego roku z HTC One X +, Droid DNA i oczywiście HTC One. Początkowo interfejs API HTC BLE był dostępny na żądanie, ale teraz można go bezpłatnie pobrać pod adresem http://htcdev.com.

Tak, wkrótce pojawi się nowe standardowe API Androida BLE z Google w Androidzie 18 na poziomie 18 (zobacz podgląd z wideo IO) - ale możesz łączyć interfejsy API innych firm (HTC, Samsung itp.) W kompatybilny sposób, aby obsługiwać nowy standardowy interfejs API, podobnie jak wszystkie interfejsy API, jest dość podobny do obsługi profilu GATT (podobny do IOS).

Powiązane problemy