Bluetooth Low Energy

Android bietet integrierte Plattformunterstützung für Bluetooth Low Energy (BLE) in der zentralen Rolle und stellt APIs bereit, mit denen Apps Geräte finden, Dienste abfragen und Informationen übertragen können.

Zu den häufigsten Anwendungsfällen gehören:

  • Kleine Datenmengen zwischen Geräten in der Nähe übertragen
  • Durch Interaktion mit Näherungssensoren können Sie Nutzern anhand ihres aktuellen Standorts eine personalisierte Umgebung bieten.

Im Gegensatz zum klassischen Bluetooth ist BLE für einen deutlich geringeren Stromverbrauch ausgelegt. Dadurch können Apps mit BLE-Geräten kommunizieren, die strengere Energieanforderungen haben, wie etwa Näherungssensoren, Herzfrequenzmesser und Fitnessgeräte.

Achtung:Wenn ein Nutzer sein Gerät über BLE mit einem anderen Gerät koppelt, sind die zwischen den beiden Geräten kommunizierten Daten für alle Apps auf dem Gerät des Nutzers zugänglich.

Wenn Ihre Anwendung sensible Daten erfasst, sollten Sie daher Sicherheitsfunktionen auf Anwendungsebene implementieren, um die Privatsphäre dieser Daten zu schützen.

Grundlagen

Damit BLE-fähige Geräte Daten untereinander übertragen können, müssen sie zuerst einen Kommunikationskanal bilden. Zur Verwendung der Bluetooth LE APIs müssen Sie in Ihrer Manifestdatei mehrere Berechtigungen deklarieren. Sobald deine App die Berechtigung zur Verwendung von Bluetooth hat, muss sie auf BluetoothAdapter zugreifen und feststellen, ob Bluetooth auf dem Gerät verfügbar ist. Wenn Bluetooth verfügbar ist, sucht das Gerät nach BLE-Geräten in der Nähe. Sobald ein Gerät gefunden wurde, werden die Funktionen des BLE-Geräts über eine Verbindung zum GATT-Server auf dem BLE-Gerät ermittelt. Sobald eine Verbindung hergestellt wurde, können basierend auf den verfügbaren Diensten und Eigenschaften Daten mit dem verbundenen Gerät übertragen.

Schlüsselbegriffe und -konzepte

Im Folgenden finden Sie eine Zusammenfassung der wichtigsten Begriffe und Konzepte von BLE:

  • Generic Attribute Profile (GATT)
    Das GATT-Profil ist eine allgemeine Spezifikation für das Senden und Empfangen kurzer Datenelemente, die als „Attribute“ bezeichnet werden, über einen BLE-Link. Alle aktuellen BLE-Anwendungsprofile basieren auf GATT. Weitere Informationen finden Sie im Android-Beispiel „BluetoothLeGatt“ auf GitHub.
  • Profile
    Die Bluetooth SIG definiert viele Profile für BLE-Geräte. Ein Profil ist eine Spezifikation, die festlegt, wie ein Gerät in einer bestimmten Anwendung funktioniert. Auf einem Gerät können mehrere Profile implementiert sein. Ein Gerät könnte beispielsweise einen Herzfrequenzmesser und einen Batteriestand enthalten.
  • Attributprotokoll (ATT)
    GATT basiert auf dem Attribute Protocol (ATT). Dies wird auch als GATT/ATT bezeichnet. ATT ist für BLE-Geräte optimiert. Dazu werden so wenige Bytes wie möglich verwendet. Jedes Attribut wird eindeutig durch eine Universally Unique Identifier (UUID) identifiziert. Dies ist ein standardisiertes 128-Bit-Format für eine String-ID, mit der Informationen eindeutig identifiziert werden. Die von ATT übertragenen Attribute sind als characteristics und services formatiert.
  • Merkmal
    Ein Merkmal enthält einen einzelnen Wert und 0-n-Deskriptoren, die den Wert der Eigenschaft beschreiben. Ein Merkmal kann als Typ betrachtet werden, ähnlich zu einer Klasse.
  • Schlagwort
    Deskriptoren sind definierte Attribute, die einen charakteristischen Wert beschreiben. Ein Deskriptor kann beispielsweise eine menschenlesbare Beschreibung, einen zulässigen Bereich für den Wert eines Merkmals oder eine Maßeinheit enthalten, die für den Wert eines Merkmals spezifisch ist.
  • Dienstleistung
    Ein Dienst ist eine Sammlung von Merkmalen. Du könntest zum Beispiel einen Dienst namens „Herzfrequenzmesser“ einrichten, der Merkmale wie „Herzfrequenzmessung“ umfasst. Eine Liste der GATT-basierten Profile und Dienste finden Sie auf bluetooth.org.

Rollen und Verantwortlichkeiten

Die folgenden Rollen und Verantwortlichkeiten gelten, wenn ein Gerät mit einem BLE-Gerät interagiert:

  • Zentral- und Peripheriegerät. Dies gilt für die BLE-Verbindung selbst. Das Gerät mit der zentralen Rolle sucht nach Werbung, während das Gerät mit der Rolle des Peripheriegeräts die Werbung durchführt.

  • GATT-Server und GATT-Client. Dadurch wird festgelegt, wie zwei Geräte miteinander kommunizieren, nachdem sie die Verbindung hergestellt haben. Stellen Sie sich vor, Sie haben ein Android-Smartphone und einen Aktivitätstracker, der ein BLE-Gerät ist, um diesen Unterschied zu verstehen. Das Smartphone unterstützt die zentrale Rolle. Der Aktivitätstracker unterstützt die Rolle von Peripheriegeräten. Zum Herstellen einer BLE-Verbindung benötigen Sie eine von beiden. Zwei Geräte, die nur Peripheriegeräte unterstützen, konnten weder miteinander kommunizieren noch zwei Dinge, die nur zentrale unterstützen.

Sobald das Smartphone und der Aktivitätstracker eine Verbindung hergestellt haben, beginnen sie mit der Übertragung der GATT-Metadaten untereinander. Abhängig von der Art der übertragenen Daten kann einer der beiden als Server fungieren. Wenn der Aktivitätstracker beispielsweise Sensordaten an das Smartphone senden möchte, kann es sinnvoll sein, dass er als Server fungiert. Wenn der Aktivitätstracker Updates vom Telefon erhalten möchte, kann es sinnvoll sein, dass das Telefon als Server fungiert.

In dem hier verwendeten Beispiel ist die App, die auf einem Android-Gerät ausgeführt wird, der GATT-Client. Die App erhält Daten vom GATT-Server, einem BLE-Herzfrequenzmesser, der das Herzfrequenzprofil unterstützt. Alternativ können Sie Ihre App so gestalten, dass sie die GATT-Serverrolle übernimmt. Weitere Informationen finden Sie unter BluetoothGattServer.