Bluetooth Low Energy (BLE), verfügbar ab Android 4.3, stellt kurze Verbindungen zwischen Geräten her, um Datenpakete zu übertragen. BLE bleibt im Ruhemodus, wenn keine Verbindung besteht. So kann BLE im Vergleich zu klassischem Bluetooth eine geringere Bandbreite und einen geringeren Energieverbrauch bieten. Sie eignet sich ideal für Apps wie einen Herzfrequenzmesser oder eine kabellose Tastatur. Für die Verwendung von BLE benötigen Geräte einen Chipsatz, der BLE unterstützt.
Implementierung
Alle aktuellen BLE-App-Profile basieren auf dem Generic Attribute Profile (GATT). Wenn ein Android-Gerät mit einem BLE-Gerät interagiert, ist das Gerät, das Informationen sendet, der Server und das Gerät, das Informationen empfängt, der Client. Android enthält Entwickler-APIs für BLE, einschließlich APIs für Interaktionen zwischen GATT-Servern und GATT-Clients. Um die BLE APIs optimal zu nutzen, müssen Sie die Bluetooth-HCI-Anforderungen von Android implementieren.
Gerätemodi
Bei der Verwendung von BLE kann ein Android-Gerät als Peripheriegerät, als zentrales Gerät oder als beides fungieren. Im Peripheriemodus können Geräte Werbepakete senden. Im zentralen Modus können Geräte nach Anzeigen suchen. Ein Android-Gerät, das sowohl als Peripherie- als auch als Zentralgerät dient, kann mit anderen BLE-Peripheriegeräten kommunizieren und gleichzeitig Anzeigen im Peripheriemodus senden. Geräte, die Bluetooth 4.1 und niedriger unterstützen, können BLE nur im zentralen Modus verwenden. Ältere Gerätechipsätze unterstützen möglicherweise nicht den BLE-Peripheriemodus.
BLE-Scan
Mit BLE kann ein Android-Gerät bestimmte Bluetooth-Geräte effizienter ansteuern und nach ihnen suchen. Mit BLE-APIs können App-Entwickler Filter zum Finden von Geräten erstellen, bei denen der Hostcontroller weniger involviert ist.
Standorterkennung
Die Standortdienste eines Geräts können Bluetooth verwenden, um Bluetooth-Beacons zu erkennen und einen genaueren Standort zu ermitteln. So aktivieren Nutzer die Funktion:
- Gehen Sie zu Einstellungen > Sicherheit und Standort > Standort.
- Prüfen Sie, ob die Standortermittlung An/Aus aktiviert ist.
- Gehen Sie zu Modus.
- Wählen Sie entweder Hohe Genauigkeit oder Energiesparmodus aus.
Unter Android 11 oder niedriger benötigen einzelne Apps Standortberechtigungen, um die BLE-Suche zu verwenden, auch wenn sie nur nach Geräten suchen, mit denen eine Verbindung hergestellt werden soll. Wenn der Nutzer die Standortsuche deaktiviert oder der App keine Standortberechtigungen gewährt, erhält die App keine BLE-Scanergebnisse.
Ab Android 12 können Apps mit den Berechtigungen
BLUETOOTH_SCAN
,
BLUETOOTH_ADVERTISE
und
BLUETOOTH_CONNECT
nach Geräten in der Nähe suchen, ohne dass die Berechtigung zur Standortermittlung angefordert werden muss.
Weitere Informationen finden Sie unter
Neue Bluetooth-Berechtigungen in Android 12.
Nutzer können die Bluetooth-Hintergrundsuche auf Systemebene deaktivieren, indem sie zu Einstellungen > Sicherheit und Standort > Standort > Suche gehen und die Option Bluetooth-Suche deaktivieren. Das hat keine Auswirkungen auf die BLE-Suche nach Standorten oder lokalen Geräten.
Scanergebnisse filtern
Android 6.0 und höher unterstützen das BLE-Scannen und die Filterabgleiche auf dem Bluetooth-Controller. Ein Gerät kann Scanergebnisse filtern und gefundene und verlorene Ereignisse im Zusammenhang mit BLE-Geräten an den Anwendungsprozessor (AP) melden. Das Filtern funktioniert auch für Batch-Scans, was Energie spart, da das BLE-Scannen an die Firmware ausgelagert wird. Mit Batch-Scans wird reduziert, wie oft der ZP durch BLE-Scans nach Geräten oder Beacons geweckt wird.
Die Funktion OnFound
/OnLost
wird im Bluetooth-Controller implementiert und dann getestet, um sicherzustellen, dass BLE-Geräte bei Scans nicht übersehen werden. Das spart Energie und bietet außerdem folgende Vorteile:
- Bei einem
OnFound
-Ereignis wird der Haupt-Zugangspunkt durch das Erkennen eines bestimmten Geräts aktiviert. - Bei einem
OnLost
-Ereignis wird der ZP aktiviert, wenn ein bestimmtes Gerät nicht gefunden werden kann. - Framework-Apps erhalten weniger unerwünschte Benachrichtigungen, wenn sich ein Gerät in der Nähe befindet.
- Durch kontinuierliche Scans können Framework-Apps benachrichtigt werden, wenn sich ein Gerät außerhalb der Reichweite befindet.
Ein Scanfilter kann auf der Erkennung der Anzeigen eines Geräts (das Ereignis OnFound
) basieren. Die Java-Ebene kann Parameter wie die erste Erkennung oder eine bestimmte Anzahl von Anzeigen seit der ersten Erkennung angeben. Implementieren Sie die BLE-Filterung mit dem
HCI-Befehl „Advertising Packet Content Filter“.