Android bietet integrierte Plattformunterstützung für Bluetooth Low Energy (BLE) und APIs, mit denen Apps Geräte finden, Dienste abfragen und Informationen übertragen können.
Zu den häufigsten Anwendungsfällen gehören:
- Übertragung kleiner Datenmengen zwischen Geräten in der Nähe
- Interagieren mit Näherungssensoren, um Nutzern eine personalisierte Nutzung basierend auf ihrem aktuellen Standort zu ermöglichen.
Im Gegensatz zu klassischem Bluetooth ist BLE für einen deutlich geringeren Energieverbrauch ausgelegt. So können Apps mit BLE-Geräten kommunizieren, die strengere Anforderungen an die Stromversorgung haben, z. B. Näherungssensoren, Herzfrequenzmesser und Fitnessgeräte.
Achtung:Wenn ein Nutzer sein Gerät über BLE mit einem anderen Gerät koppelt, können alle Apps auf dem Gerät des Nutzers auf die Daten zugreifen, die zwischen den beiden Geräten ausgetauscht werden.
Wenn Ihre App vertrauliche Daten erfasst, sollten Sie daher Sicherheitsmaßnahmen 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. Wenn Sie die Bluetooth LE APIs verwenden möchten, müssen Sie in Ihrer Manifestdatei mehrere Berechtigungen deklarieren. Sobald Ihre 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 durch Herstellen einer Verbindung zum GATT-Server auf dem BLE-Gerät ermittelt.
Sobald eine Verbindung hergestellt wurde, können Daten je nach verfügbaren Diensten und Eigenschaften an das verbundene Gerät übertragen werden.
Wichtige Begriffe und Konzepte
Im Folgenden finden Sie eine Zusammenfassung der wichtigsten BLE-Begriffe und ‑Konzepte:
- Generic Attribute Profile (GATT)
- Das GATT-Profil ist eine allgemeine Spezifikation zum Senden und Empfangen kurzer Daten, die als „Attribute“ bezeichnet werden, über einen BLE-Link. Alle aktuellen BLE-Anwendungsprofile basieren auf GATT. Weitere Informationen finden Sie im Android BluetoothLeGatt-Beispiel auf GitHub.
- Profile
- Die Bluetooth SIG definiert viele Profile für BLE-Geräte. Ein Profil ist eine Spezifikation dafür, wie ein Gerät in einer bestimmten Anwendung funktioniert. Hinweis: Ein Gerät kann mehrere Profile implementieren. Ein Gerät kann beispielsweise einen Pulsmesser und einen Akkustandsensor enthalten.
- Attribute Protocol (ATT)
- GATT basiert auf dem Attribute Protocol (ATT). Dies wird auch als GATT/ATT bezeichnet. ATT ist für die Ausführung auf BLE-Geräten optimiert. Dazu werden so wenige Bytes wie möglich verwendet. Jedes Attribut wird durch eine Universally Unique Identifier (UUID) eindeutig identifiziert. Das ist ein standardisiertes 128-Bit-Format für eine String-ID, mit der Informationen eindeutig identifiziert werden. Die von ATT übermittelten Attribute sind als Merkmale und Dienste formatiert.
- Attribut
- Eine Eigenschaft enthält einen einzelnen Wert und 0–n Beschreibungen, die den Wert der Eigenschaft beschreiben. Eine Eigenschaft kann als ein Typ betrachtet werden, analog zu einer Klasse.
- Beschreibung
- Deskriptoren sind definierte Attribute, die einen charakteristischen Wert beschreiben. Ein Deskriptor kann beispielsweise eine visuell lesbare Beschreibung, einen zulässigen Bereich für den Wert einer Eigenschaft oder eine Maßeinheit angeben, die für den Wert einer Eigenschaft spezifisch ist.
- Dienst
- Ein Dienst ist eine Sammlung von Merkmalen. Sie könnten beispielsweise einen Dienst namens „Herzfrequenzmesser“ haben, der Merkmale wie „Herzfrequenzmessung“ enthält. Eine Liste der vorhandenen GATT-basierten Profile und Dienste finden Sie unter bluetooth.org.
Rollen und Verantwortlichkeiten
Wenn ein Gerät mit einem BLE-Gerät interagiert, sind Rollen und Verantwortlichkeiten auf zwei verschiedene Arten unterteilt:
Zentrale und periphere Geräte Das gilt für die BLE-Verbindung selbst: Das Gerät in der zentralen Rolle sucht nach Werbung und das Gerät in der peripheren Rolle sendet Werbung. Zwei Geräte, die nur die Peripherierolle unterstützen, können nicht miteinander kommunizieren. Das gilt auch für zwei Geräte, die nur die zentrale Rolle unterstützen.
GATT-Server und GATT-Client Damit wird festgelegt, wie die beiden Geräte miteinander kommunizieren, nachdem die Verbindung hergestellt wurde. Das Gerät in der Clientrolle sendet Anfragen an das Gerät in der Serverrolle, das sie erfüllt.
Um den Unterschied zwischen den Rollen „Zentralgerät“ und „Peripheriegerät“ und „Server“ und „Client“ zu verstehen, betrachten Sie ein Beispiel mit einem Android-Smartphone und einem BLE-fähigen Aktivitätstracker, der Sensordaten an das Smartphone zurücksendet.
Das Smartphone – das zentrale Gerät – sucht aktiv nach BLE-Geräten. Der Aktivitätstracker – das Peripheriegerät – sendet eine Werbung und wartet auf eine Verbindungsanfrage.
Nachdem das Smartphone und der Aktivitätstracker eine Verbindung hergestellt haben, beginnen sie, GATT-Metadaten miteinander zu übertragen. In diesem Fall sendet die auf dem Smartphone laufende App Datenanfragen und fungiert als GATT-Client. Der Aktivitätstracker erfüllt diese Anfragen und fungiert daher als GATT-Server.
Bei einem alternativen Design der App könnte das Smartphone stattdessen die Rolle des GATT-Servers übernehmen. Weitere Informationen finden Sie unter BluetoothGattServer
.