Bluetooth-Übersicht

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:

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, ein BluetoothDevice mit einer bekannten MAC-Adresse instanziieren und ein BluetoothServerSocket 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 über InputStream und OutputStream 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 verbundenes BluetoothSocket 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.