Die Android-Plattform unterstützt den Bluetooth-Netzwerkstack, mit dem ein Gerät kabellos Daten mit anderen Bluetooth-Geräten austauschen kann. Das App-Framework bietet Zugriff auf die Bluetooth-Funktion über Bluetooth APIs. Über diese APIs können Apps eine Verbindung zu anderen Bluetooth-Geräten herstellen, um Punkt-zu-Punkt- und Multipoint-WLAN-Funktionen zu ermöglichen.
Mit den Bluetooth-APIs kann eine App Folgendes durchführen:
- Suchen Sie nach anderen Bluetooth-Geräten.
- Fragen Sie den lokalen Bluetooth-Adapter nach gekoppelten Bluetooth-Geräten ab.
- Richten Sie RFCOMM-Kanäle ein.
- Über die Diensterkennung können Sie Verbindungen zu anderen Geräten herstellen.
- Daten auf andere Geräte und von anderen Geräten übertragen
- Mehrere Verbindungen verwalten
In diesem Artikel geht es um das klassische Bluetooth. Klassisches Bluetooth ist die richtige Wahl für energieintensive Vorgänge, wie das Streaming und die Kommunikation zwischen Geräten. Für Bluetooth-Geräte mit geringem Strombedarf sollten Sie Bluetooth Low Energy-Verbindungen verwenden.
In dieser Dokumentation werden verschiedene Bluetooth-Profile beschrieben. Außerdem wird erläutert, wie die Bluetooth APIs verwendet werden, um die vier wichtigsten Aufgaben zu erfüllen, die für die Kommunikation über Bluetooth erforderlich sind:
- Bluetooth wird eingerichtet.
- Geräte finden, die entweder gekoppelt sind oder in der Nähe verfügbar sind
- Geräte verbinden.
- Datenübertragung zwischen Geräten
Eine Demonstration der Verwendung der Bluetooth APIs finden Sie in der Beispiel-App „Bluetooth Chat“.
Grundlagen
Damit Bluetooth-fähige Geräte Daten untereinander übertragen können, müssen sie zuerst über einen Kopplungsprozess einen Kommunikationskanal bilden. Ein Gerät, also ein auffindbares Gerät, stellt sich für eingehende Verbindungsanfragen selbst zur Verfügung. Ein anderes Gerät findet das sichtbare Gerät mithilfe einer Diensterkennung. Nachdem das auffindbare Gerät die Kopplungsanfrage akzeptiert hat, tauschen die beiden Geräte einen Verknüpfungsvorgang aus, bei dem sie Sicherheitsschlüssel austauschen. Die Schlüssel werden von den Geräten zur späteren Verwendung im Cache gespeichert. Nach Abschluss der Kopplungs- und Verknüpfungsverfahren tauschen die beiden Geräte Informationen aus. Wenn die Sitzung abgeschlossen ist, gibt das Gerät, das die Kopplungsanfrage initiiert hat, den Kanal frei, der es mit dem sichtbaren Gerät verknüpft hat. Die beiden Geräte bleiben jedoch verbunden, sodass sie während einer zukünftigen Sitzung automatisch wieder verbunden werden können, solange sie sich in Reichweite zueinander befinden und keines der Geräte die Verbindung entfernt hat.
Für die Verwendung der Bluetooth APIs müssen in der Manifestdatei mehrere Berechtigungen deklariert werden. 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, können Sie in drei Schritten eine Verbindung herstellen:
- Finde Bluetooth-Geräte in der Nähe, entweder bereits gekoppelte oder neue Bluetooth-Geräte.
- Stelle eine Verbindung zu einem Bluetooth-Gerät her.
- Daten mit dem verbundenen Gerät übertragen
Bestimmte Geräte verwenden ein bestimmtes Bluetooth-Profil, in dem die bereitgestellten Daten angegeben sind.
Wichtige Klassen und Schnittstellen
Alle Bluetooth APIs sind im Paket android.bluetooth
verfügbar.
Die folgenden Klassen und Schnittstellen benötigen Sie zum Herstellen von Bluetooth-Verbindungen:
BluetoothAdapter
- Steht für den lokalen Bluetooth-Adapter (Bluetooth-Funkgerät).
BluetoothAdapter
ist der Einstiegspunkt für alle Bluetooth-Interaktionen. Auf diese Weise können Sie andere Bluetooth-Geräte finden, eine Liste von verbundenen (gekoppelten) Geräten abfragen, einBluetoothDevice
mit einer bekannten MAC-Adresse instanziieren und einBluetoothServerSocket
erstellen, das auf Kommunikation von anderen Geräten wartet. BluetoothDevice
- Steht für ein Remote-Bluetooth-Gerät. Hiermit fordern Sie eine Verbindung mit einem Remote-Gerät über einen
BluetoothSocket
an oder fragen Informationen über das Gerät wie Name, Adresse, Klasse und Verbindungsstatus ab. BluetoothSocket
- Stellt die Schnittstelle für einen Bluetooth-Socket dar (ähnlich einem TCP-
Socket
). Dies ist der Verbindungspunkt, über den eine App überInputStream
undOutputStream
Daten mit einem anderen Bluetooth-Gerät austauschen kann. BluetoothServerSocket
- Steht für einen offenen Server-Socket, der auf eingehende Anfragen wartet (ähnlich wie ein TCP-Socket
ServerSocket
). Damit zwei Geräte verbunden werden können, muss ein Gerät mit dieser Klasse einen Server-Socket öffnen. Wenn ein Remote-Bluetooth-Gerät eine Verbindungsanfrage an dieses Gerät stellt, akzeptiert das Gerät die Verbindung und gibt dann ein verbundenesBluetoothSocket
zurück. BluetoothClass
- Hier werden die allgemeinen Eigenschaften und Funktionen eines Bluetooth-Geräts beschrieben. Dies ist ein schreibgeschützter Satz von Properties, mit dem die Klassen und Dienste des Geräts definiert werden. Obwohl diese Informationen einen nützlichen Hinweis auf den Gerätetyp eines Geräts geben, geben die Attribute dieser Klasse nicht unbedingt alle Bluetooth-Profile und -Dienste an, die vom Gerät unterstützt werden.
BluetoothProfile
- Eine Schnittstelle, die ein Bluetooth-Profil darstellt. Ein Bluetooth-Profil ist eine kabellose Schnittstellenspezifikation für die Bluetooth-basierte Kommunikation zwischen Geräten. Ein Beispiel hierfür ist das Hands-Free-Profil. Weitere Informationen zu Profilen findest du unter Bluetooth-Profile.
BluetoothHeadset
- Bietet Unterstützung für Bluetooth-Headsets zur Verwendung mit Smartphones Dies umfasst sowohl das Bluetooth-Headset-Profil als auch das Freisprechprofil (Version 1.5).
BluetoothA2dp
- Bestimmt, wie qualitativ hochwertiges Audio über eine Bluetooth-Verbindung mithilfe des Advanced Audio Distribution Profile (A2DP) von einem Gerät zu einem anderen gestreamt werden kann.
BluetoothHealth
- Steht für einen Health Device Profile-Proxy, der den Bluetooth-Dienst steuert.
BluetoothHealthCallback
- Eine abstrakte Klasse, mit der Sie
BluetoothHealth
-Callbacks implementieren. Sie müssen diese Klasse erweitern und die Callback-Methoden implementieren, um Aktualisierungen zu Änderungen am Registrierungsstatus und am Status des Bluetooth-Kanals der App zu erhalten. BluetoothHealthAppConfiguration
- Steht für eine App-Konfiguration, die die Drittanbieter-App Bluetooth Health für die Kommunikation mit einem Remote-Bluetooth-Gerät registriert.
BluetoothProfile.ServiceListener
- Eine Schnittstelle, die
BluetoothProfile
-IPC-Clients (Interprocess Communication) benachrichtigt, wenn sie mit dem internen Dienst, der ein bestimmtes Profil ausführt, verbunden oder davon getrennt wurden.