Werbepaket in Android lesen

7

Ich arbeite an einem BLE-Sensor, der herstellerspezifische Daten anzeigt. Gibt es einen Beispielcode, der zeigt, wie ein Ankündigungs-Paket in Android empfangen und seine Nutzlast analysiert?

Vielen Dank für Ihre Hilfe.

    
Gilson 02.06.2014, 21:43
quelle

3 Antworten

17

Das habe ich gesucht:

Die BLE-Scan-API BluetoothAdapter.startLeScan (ScanCallback) benötigt eine Rückruffunktion für die Scan-Ergebnisse. Die Methode muss wie folgt aussehen:

%Vor%

Und die scanRecord-Variable ist ein Byte-Array, das die Payload des Advertisement-Pakets enthält.

Gemäß der BLE-Spezifikation ist die Struktur der Nutzlast wie folgt sehr einfach:

Die Pakete können bis zu 47 Bytes lang sein und bestehen aus:

  • 1 Byte Präambel
  • 4 Byte Zugriffsadresse
  • 2 - 39 Byte WerbekanalPDU
  • 3 Bytes CRC

Für Werbekommunikationskanäle ist die Zugriffsadresse immer 0x8E89BED6.

Die PDU wiederum hat ihren eigenen Header (2 Byte: Größe der Nutzlast und ihres Typs - ob das Gerät Verbindungen unterstützt usw.) und die tatsächliche Nutzlast (bis zu 37 Byte).

Schließlich sind die ersten 6 Bytes der Payload die MAC-Adresse des Geräts, und die tatsächliche Information kann bis zu 31 Bytes umfassen.

Das Format der tatsächlichen Informationen ist wie folgt:

erstes Byte ist die Länge der Daten und zweites Byte ist der Typ gefolgt von den Daten.

Dies ist eine clevere Möglichkeit, jeder Anwendung zu erlauben, ganze Datensätze zu überspringen, wenn sie sich nicht um den Inhalt kümmern.

Hier ist der Beispielcode, um den Inhalt des Advertisement-Pakets zu bestimmen:

%Vor%

Danke an

how-ibeacons-work

Bluetooth-Org-Spezifikationen

Masse , um mich in die richtige Richtung zu lenken!

    
Gilson 04.06.2014 17:53
quelle
3

ADPayloadParser in nv-bluetooth analysiert die Nutzdaten eines Werbepakets und gibt eine Liste der AD-Strukturen zurück. Das AD-Strukturformat wird in "11 ADVERTISING- UND SCAN-RESPONSE-DATENFORMAT" der "Bluetooth Core Specification 4.2" beschrieben.

Das folgende Code-Snippet ist ein Implementierungsbeispiel für onLeScan Methode.

%Vor%

Sie können einen eigenen Parser für Ihr herstellerspezifisches Format in ADPayloadParser registrieren. Weitere Informationen finden Sie unter den folgenden Links.

Blog: Ссылка

GitHub: Ссылка

JavaDoc: Ссылка

Maven: Ссылка

    
Takahiko Kawasaki 22.03.2015 18:35
quelle
0

bearbeiten 21.02.2016

Die unten verlinkte Bibliothek scheint verschoben worden zu sein; siehe Ссылка

Sie können zunächst die Android iBeacon Library verwenden.

Es gibt eine Referenzanwendung, die Sie für die Grundlagen und mit simulierten Daten verwenden können. ~ Ссылка

Sobald Sie es in Betrieb genommen haben, möchten Sie vielleicht die Bibliothek importieren und sie mit Ihrem echten Gerät verwenden, es gibt auch einen Beispielcode auf der Site: Ссылка

    
mass 03.06.2014 10:39
quelle

Tags und Links