Bluetooth Low Energy (BLE) ist in Android 4.3 und höher verfügbar und stellt kurze Verbindungen zwischen Geräten her, um Daten in kurzen Schüben zu übertragen. Wenn keine Verbindung besteht, bleibt BLE im Ruhemodus. Dadurch bietet BLE im Vergleich zu Classic Bluetooth eine geringere Bandbreite und einen niedrigeren Stromverbrauch. BLE ist ideal für Apps wie Herzfrequenzmesser oder kabellose Tastaturen. Um BLE verwenden zu können, benötigen Geräte einen Chipsatz, der BLE unterstützt.
Implementierung
Alle aktuellen BLE-App-Profile basieren auf dem Generic Attribute (GATT) Profile. 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, implementieren Sie die Android Bluetooth HCI Requirements.
Gerätemodi
Bei 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 Werbung suchen. Ein Android-Gerät, das sowohl als Peripheriegerät als auch als zentrales Gerät fungiert, kann mit anderen BLE-Peripheriegeräten kommunizieren und gleichzeitig im Peripheriemodus Werbung senden. Geräte, die Bluetooth 4.1 und niedriger unterstützen, können BLE nur im zentralen Modus verwenden. Ältere Geräte-Chipsätze unterstützen den BLE-Peripheriemodus möglicherweise nicht.
BLE-Suche
Mit BLE kann ein Android-Gerät bestimmte Bluetooth-Geräte effizienter ansteuern und nach ihnen suchen. Mit den BLE-APIs können App-Entwickler Filter erstellen, um Geräte mit weniger Aufwand für den Hostcontroller zu finden.
Standortsuche
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:
- Öffnen Sie die Einstellungen > Sicherheit & Standort > Standort.
- Prüfen Sie, ob der Schieberegler für Standort auf Ein steht.
- Gehen Sie zu Modus.
- Wählen Sie entweder den Modus Hohe Genauigkeit oder Energiesparmodus aus.
Unter Android 11 und niedriger benötigen einzelne Apps Standortberechtigungen, um die BLE-Suche zu verwenden, auch wenn sie nur nach Geräten suchen, mit denen sie eine Verbindung herstellen möchten. Wenn der Nutzer die Standortsuche deaktiviert oder einer App keine Standortberechtigungen gewährt, erhält die App keine Ergebnisse der BLE-Suche.
Unter Android 12 und höher können Apps mit den
BLUETOOTH_SCAN, BLUETOOTH_ADVERTISE,
und
BLUETOOTH_CONNECT
Berechtigungen nach Geräten in der Nähe suchen, ohne die
Berechtigung zur Standortermittlung anfordern zu müssen. Weitere Informationen finden Sie unter
Bluetooth-Berechtigungen.
Nutzer können die Bluetooth-Hintergrundsuche auf Systemebene deaktivieren. Gehen Sie dazu zu den Einstellungen > Sicherheit & Standort > Standort > Suche und klicken Sie auf den Schieberegler Bluetooth-Suche , um ihn zu deaktivieren. Dies hat keine Auswirkungen auf die BLE-Suche nach Standort- oder lokalen Geräten.
Suchergebnisse filtern
Unter Android 6.0 und höher sind die BLE-Suche und der Filterabgleich auf dem Bluetooth-Controller enthalten. Ein Gerät kann Suchergebnisse filtern und Ereignisse vom Typ gefunden und verloren im Zusammenhang mit BLE-Geräten an den Anwendungsprozessor (AP) melden. Die Filterung funktioniert auch für Batch-Scans, was dazu beiträgt, Strom zu sparen, da das Gerät die BLE-Suche an die Firmware auslagert. Batch-Scans reduzieren, wie oft der AP aufgrund der BLE-Suche nach Geräten oder Beacons aufwacht.
Die Funktion OnFound/OnLost wird im Bluetooth-Controller implementiert und dann getestet, um zu bestätigen, dass bei Scans keine BLE-Geräte übersehen werden. Dies führt zu Energieeinsparungen und kann auch folgende Vorteile bieten:
- Bei einem
OnFound-Ereignis wird der Haupt-AP beim Auffinden eines bestimmten Geräts aktiviert. - Bei einem
OnLost-Ereignis wird der AP 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 Werbung eines Geräts basieren (das OnFound-Ereignis). Die Java-Ebene kann Parameter wie die erste Erkennung (oder eine bestimmte Anzahl von Werbeanzeigen seit der ersten Erkennung) angeben.
Implementieren Sie die BLE-Filterung mit dem
HCI-Befehl Advertising Packet Content Filter.