Présentation du Bluetooth
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
La plate-forme Android est compatible avec la pile réseau Bluetooth, qui permet à un appareil d'échanger des données sans fil avec d'autres appareils Bluetooth. Le framework d'application permet d'accéder aux fonctionnalités Bluetooth via des API Bluetooth. Ces API permettent aux applications de se connecter à d'autres appareils Bluetooth, ce qui permet les fonctionnalités sans fil point à point et multipoint.
À l'aide des API Bluetooth, une application peut effectuer les opérations suivantes:
- Recherchez d'autres appareils Bluetooth.
- Demandez à l'adaptateur Bluetooth local de rechercher les appareils Bluetooth associés.
- Établir des canaux RFCOMM.
- Se connecter à d'autres appareils via la détection de services
- Transférez des données vers et depuis d'autres appareils.
- Gérez plusieurs connexions.
Cet article porte sur le Bluetooth classique. Le Bluetooth classique est le meilleur choix pour les opérations qui sollicitent davantage la batterie, telles que la diffusion en streaming et la communication entre les appareils. Pour les appareils Bluetooth à faible consommation d'énergie, envisagez d'utiliser des connexions Bluetooth à basse consommation.
Cette documentation décrit les différents profils Bluetooth et explique comment utiliser les API Bluetooth pour effectuer les quatre tâches principales nécessaires à la communication via le Bluetooth:
- Configuration du Bluetooth...
- Rechercher des appareils associés ou disponibles dans la zone locale
- Connexion des appareils...
- Transférer des données entre des appareils
Pour voir une démonstration de l'utilisation des API Bluetooth, consultez l'application exemple Chat Bluetooth.
Principes de base
Pour que les appareils compatibles Bluetooth puissent transmettre des données entre eux, ils doivent d'abord former un canal de communication à l'aide d'un processus d'association. Un appareil, un appareil visible, se rend disponible pour les requêtes de connexion entrantes.
Un autre appareil détecte l'appareil visible à l'aide d'un processus de détection de services.
Une fois que l'appareil visible a accepté la demande d'association, les deux appareils effectuent un processus d'association dans lequel ils échangent des clés de sécurité. Les appareils mettent en cache ces clés pour une utilisation ultérieure. Une fois les processus d'association et d'association terminés, les deux appareils échangent des informations. Une fois la session terminée, l'appareil qui a lancé la requête d'association libère le canal qui l'avait associé à l'appareil visible. Les deux appareils restent toutefois liés. Ils peuvent donc se reconnecter automatiquement lors d'une future session tant qu'ils sont à portée l'un de l'autre et qu'aucun appareil n'a supprimé la liaison.
L'utilisation des API Bluetooth nécessite de déclarer plusieurs autorisations dans le fichier manifeste. Une fois que votre application est autorisée à utiliser le Bluetooth, elle doit accéder au BluetoothAdapter
et déterminer si le Bluetooth est disponible sur l'appareil.
Si le Bluetooth est disponible, vous pouvez établir une connexion en trois étapes:
Certains appareils utilisent un profil Bluetooth spécifique qui déclare les données qu'il fournit.
Classes et interfaces de clés
Toutes les API Bluetooth sont disponibles dans le package android.bluetooth
.
Voici les classes et les interfaces dont vous avez besoin pour créer des connexions Bluetooth:
BluetoothAdapter
- Représente l'adaptateur Bluetooth local (radio Bluetooth).
BluetoothAdapter
est le point d'entrée de toutes les interactions Bluetooth. Vous pouvez ainsi détecter d'autres appareils Bluetooth, interroger une liste d'appareils associés, instancier un BluetoothDevice
à l'aide d'une adresse MAC connue et créer un BluetoothServerSocket
pour écouter les communications d'autres appareils.
BluetoothDevice
- Représente un appareil Bluetooth distant. Utilisez cette option pour demander une connexion avec un appareil distant via un
BluetoothSocket
ou obtenir des informations sur l'appareil, telles que son nom, son adresse, sa classe et son état de liaison.
BluetoothSocket
- Représente l'interface d'un socket Bluetooth (semblable à un TCP
Socket
). Il s'agit du point de connexion qui permet à une application d'échanger des données avec un autre appareil Bluetooth à l'aide de InputStream
et OutputStream
.
BluetoothServerSocket
- Représente un socket de serveur ouvert qui écoute les requêtes entrantes (semblable à un
ServerSocket
TCP). Pour connecter deux appareils, un appareil doit ouvrir un socket serveur avec cette classe. Lorsqu'un appareil Bluetooth distant envoie une demande de connexion à cet appareil, celui-ci accepte la connexion, puis renvoie un BluetoothSocket
connecté.
BluetoothClass
- Décrit les caractéristiques et les capacités générales d'un appareil Bluetooth.
Il s'agit d'un ensemble de propriétés en lecture seule qui définit les classes et les services de l'appareil. Bien que ces informations fournissent un indice utile sur le type d'un appareil, les attributs de cette classe ne décrivent pas nécessairement tous les profils et services Bluetooth compatibles avec l'appareil.
BluetoothProfile
- Interface représentant un profil Bluetooth. Un profil Bluetooth est une spécification d'interface sans fil pour la communication Bluetooth entre les appareils. Le profil mains libres en est un exemple. Pour en savoir plus sur les profils, consultez la section Profils Bluetooth.
BluetoothHeadset
- Compatible avec les casques Bluetooth utilisables avec les téléphones mobiles. Cela inclut le profil casque Bluetooth et le profil mains libres (v1.5).
BluetoothA2dp
- Définit la manière dont un son de haute qualité peut être diffusé d'un appareil à un autre via une connexion Bluetooth à l'aide du profil de distribution audio avancé (A2DP).
BluetoothHealth
- Représente un proxy de profil d'appareil de santé qui contrôle le service Bluetooth.
BluetoothHealthCallback
- Classe abstraite que vous utilisez pour implémenter des rappels
BluetoothHealth
. Vous devez étendre cette classe et implémenter les méthodes de rappel pour recevoir des informations sur les modifications de l'état d'enregistrement de l'application et de l'état du canal Bluetooth.
BluetoothHealthAppConfiguration
- Représente une configuration d'application que l'application tierce Bluetooth Health enregistre pour communiquer avec un appareil de santé Bluetooth distant.
BluetoothProfile.ServiceListener
- Interface qui informe les clients de la communication inter-processus (IPC)
BluetoothProfile
lorsqu'ils sont connectés ou déconnectés du service interne qui exécute un profil particulier.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/26 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/26 (UTC)."],[],[],null,["# Bluetooth overview\n\nThe Android platform includes support for the Bluetooth network stack, which\nallows a device to wirelessly exchange data with other Bluetooth devices. The\napp framework provides access to the Bluetooth functionality through Bluetooth\nAPIs. These APIs let apps connect to other Bluetooth devices, enabling\npoint-to-point and multipoint wireless features.\n\nUsing the Bluetooth APIs, an app can perform the following:\n\n- Scan for other Bluetooth devices.\n- Query the local Bluetooth adapter for paired Bluetooth devices.\n- Establish RFCOMM channels.\n- Connect to other devices through service discovery.\n- Transfer data to and from other devices.\n- Manage multiple connections.\n\nThis topic focuses on *Classic Bluetooth* . Classic Bluetooth is the right choice\nfor more battery-intensive operations, which include streaming and communicating\nbetween devices. For Bluetooth devices with low power requirements, consider\nusing [Bluetooth Low Energy](/develop/connectivity/bluetooth/ble-overview)\nconnections.\n\nThis documentation describes different Bluetooth\n[profiles](/develop/connectivity/bluetooth/profiles) and explains how to\nuse the Bluetooth APIs to accomplish the four major tasks necessary to\ncommunicate using Bluetooth:\n\n- Setting up Bluetooth.\n- Finding devices that are either paired or available in the local area.\n- Connecting devices.\n- Transferring data between devices.\n\nFor a demonstration of using the Bluetooth APIs, see the [Bluetooth Chat sample\napp](https://github.com/android/connectivity-samples/tree/master/BluetoothChat).\n\nThe basics\n----------\n\nFor Bluetooth-enabled devices to transmit data between each other, they must\nfirst form a channel of communication using a pairing process. One device, a\ndiscoverable device, makes itself available for incoming connection requests.\nAnother device finds the discoverable device using a service discovery process.\nAfter the discoverable device accepts the pairing request, the two devices\ncomplete a bonding process in which they exchange security keys. The devices\ncache these keys for later use. After the pairing and bonding processes are\ncomplete, the two devices exchange information. When the session is complete,\nthe device that initiated the pairing request releases the channel that had\nlinked it to the discoverable device. The two devices remain bonded, however, so\nthey can reconnect automatically during a future session as long as they're in\nrange of each other and neither device has removed the bond.\n\nUse of the Bluetooth APIs requires\n[declaring several permissions](/develop/connectivity/bluetooth/bt-permissions#declare)\nin your manifest file. Once your app has permission to use Bluetooth, your app\nneeds to access the\n[`BluetoothAdapter`](/reference/android/bluetooth/BluetoothAdapter) and\n[determine if Bluetooth is available on the device](/develop/connectivity/bluetooth/setup).\nIf Bluetooth is available, there are three steps to make a connection:\n\n- [Find nearby Bluetooth\n devices](/develop/connectivity/bluetooth/find-bluetooth-devices), either devices that are already paired or new ones.\n- [Connect to a Bluetooth\n device](/develop/connectivity/bluetooth/connect-bluetooth-devices).\n- [Transfer data with the connected\n device](/develop/connectivity/bluetooth/transfer-data).\n\nCertain devices use a specific [Bluetooth\nprofile](/develop/connectivity/bluetooth/profiles) that declares the data\nit provides.\n\nKey classes and interfaces\n--------------------------\n\nAll of the Bluetooth APIs are available in the\n[`android.bluetooth`](/reference/android/bluetooth/package-summary) package.\nThe following are the classes and interfaces you need in order to create\nBluetooth connections:\n\n[`BluetoothAdapter`](/reference/android/bluetooth/BluetoothAdapter)\n: Represents the local Bluetooth adapter (Bluetooth radio). The\n `BluetoothAdapter` is the entry-point for all Bluetooth interaction. Using\n this, you can discover other Bluetooth devices, query a list of bonded\n (paired) devices, instantiate a\n `BluetoothDevice` using a known MAC address, and create a\n `BluetoothServerSocket` to listen for communications from other devices.\n\n[`BluetoothDevice`](/reference/android/bluetooth/BluetoothDevice)\n: Represents a remote Bluetooth device. Use this to request a connection with a\n remote device through a `BluetoothSocket` or query information about the\n device such as its name, address, class, and bonding state.\n\n[`BluetoothSocket`](/reference/android/bluetooth/BluetoothSocket)\n: Represents the interface for a Bluetooth socket (similar to a TCP\n [`Socket`](/reference/java/net/Socket)). This is the connection point that\n allows an app to exchange data with another Bluetooth device using\n [`InputStream`](/reference/java/io/InputStream) and\n [`OutputStream`](/reference/java/io/OutputStream).\n\n[`BluetoothServerSocket`](/reference/android/bluetooth/BluetoothServerSocket)\n: Represents an open server socket that listens for incoming requests (similar\n to a TCP [`ServerSocket`](/reference/java/net/ServerSocket)). In order to\n connect two devices, one device must open a server socket with this\n class. When a remote Bluetooth device makes a connection request to this\n device, the device accepts the connection and then returns a connected\n `BluetoothSocket`.\n\n[`BluetoothClass`](/reference/android/bluetooth/BluetoothClass)\n: Describes the general characteristics and capabilities of a Bluetooth device.\n This is a read-only set of properties that defines the device's classes and\n services. Although this information provides a useful hint regarding a\n device's type, the attributes of this class don't necessarily describe all\n Bluetooth profiles and services that the device supports.\n\n[`BluetoothProfile`](/reference/android/bluetooth/BluetoothProfile)\n: An interface that represents a Bluetooth profile. A Bluetooth profile is a\n wireless interface specification for Bluetooth-based communication between\n devices. An example is the Hands-Free profile. For more discussion of\n profiles, see [Bluetooth profiles](/develop/connectivity/bluetooth/profiles).\n\n[`BluetoothHeadset`](/reference/android/bluetooth/BluetoothHeadset)\n: Provides support for Bluetooth headsets to be used with mobile phones. This\n includes both the Bluetooth Headset profile and the Hands-Free (v1.5) profile.\n\n[`BluetoothA2dp`](/reference/android/bluetooth/BluetoothA2dp)\n: Defines how high-quality audio can be streamed from one device to another over\n a Bluetooth connection using the Advanced Audio Distribution Profile (A2DP).\n\n[`BluetoothHealth`](/reference/android/bluetooth/BluetoothHealth)\n: Represents a Health Device Profile proxy that controls the Bluetooth service.\n\n[`BluetoothHealthCallback`](/reference/android/bluetooth/BluetoothHealthCallback)\n: An abstract class that you use to implement `BluetoothHealth` callbacks. You\n must extend this class and implement the callback methods to receive updates\n about changes in the app's registration state and Bluetooth channel\n state.\n\n[`BluetoothHealthAppConfiguration`](/reference/android/bluetooth/BluetoothHealthAppConfiguration)\n: Represents an app configuration that the Bluetooth Health third-party\n app registers to communicate with a remote Bluetooth health device.\n\n[`BluetoothProfile.ServiceListener`](/reference/android/bluetooth/BluetoothProfile.ServiceListener)\n: An interface that notifies `BluetoothProfile` interprocess communication (IPC)\n clients when they have been connected to or disconnected from the internal\n service that runs a particular profile."]]