Panoramica Bluetooth
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
La piattaforma Android include il supporto dello stack di rete Bluetooth, che consente a un dispositivo di scambiare dati in modalità wireless con altri dispositivi Bluetooth. Il framework dell'app fornisce l'accesso alla funzionalità Bluetooth tramite API Bluetooth. Queste API consentono alle app di connettersi ad altri dispositivi Bluetooth, abilitando funzionalità wireless
point-to-point e multipunto.
Utilizzando le API Bluetooth, un'app può eseguire le seguenti operazioni:
- Cerca altri dispositivi Bluetooth.
- Interroga l'adattatore Bluetooth locale per i dispositivi Bluetooth accoppiati.
- Stabilire i canali RFCOMM.
- Connettiti ad altri dispositivi tramite il rilevamento dei servizi.
- Trasferire dati da e verso altri dispositivi.
- Gestire più connessioni.
Questo argomento riguarda il Bluetooth classico. Il Bluetooth classico è la scelta giusta per le operazioni che consumano molta batteria, tra cui lo streaming e la comunicazione tra dispositivi. Per i dispositivi Bluetooth con requisiti di alimentazione ridotti, valuta l'utilizzo di connessioni Bluetooth Low Energy.
Questa documentazione descrive diversi profili Bluetooth e spiega come
utilizzare le API Bluetooth per svolgere le quattro attività principali necessarie
per comunicare tramite Bluetooth:
- Configurazione del Bluetooth in corso...
- Ricerca di dispositivi accoppiati o disponibili nella tua area geografica.
- Connessione dei dispositivi in corso...
- Trasferimento di dati tra dispositivi.
Per una dimostrazione dell'utilizzo delle API Bluetooth, vedi l'app di esempio per la chat Bluetooth.
Nozioni di base
Affinché i dispositivi Bluetooth possano trasmettere dati tra loro, devono innanzitutto formare un canale di comunicazione utilizzando una procedura di accoppiamento. Un dispositivo, un dispositivo rilevabile, si rende disponibile per le richieste di connessione in arrivo.
Un altro dispositivo trova il dispositivo rilevabile utilizzando un processo di rilevamento dei servizi.
Dopo che il dispositivo rilevabile accetta la richiesta di accoppiamento, i due dispositivi completano un processo di collegamento, in cui si scambiano i token di sicurezza. I dispositivi memorizzano nella cache queste chiavi per utilizzarle in un secondo momento. Una volta completati i processi di associazione
e collegamento, i due dispositivi si scambiano informazioni. Al termine della sessione, il dispositivo che ha avviato la richiesta di accoppiamento rilascia il canale che lo aveva collegato al dispositivo rilevabile. Tuttavia, i due dispositivi rimangono collegati, quindi possono riconnettersi automaticamente durante una sessione futura purché si trovino nel raggio d'azione l'uno dell'altro e nessuno dei due abbia rimosso il collegamento.
Per utilizzare le API Bluetooth è necessario dichiarare diverse autorizzazioni nel file manifest. Una volta che l'app è autorizzata a utilizzare il Bluetooth, deve accedere a BluetoothAdapter
e determinare se il Bluetooth è disponibile sul dispositivo.
Se il Bluetooth è disponibile, devi eseguire tre passaggi per stabilire la connessione:
Alcuni dispositivi utilizzano un profilo Bluetooth specifico che dichiara i dati forniti.
Classi e interfacce chiave
Tutte le API Bluetooth sono disponibili nel pacchetto android.bluetooth
.
Di seguito sono riportate le classi e le interfacce necessarie per creare connessioni Bluetooth:
BluetoothAdapter
- Rappresenta l'adattatore Bluetooth locale (radio Bluetooth).
BluetoothAdapter
è il punto di ingresso per tutte le interazioni Bluetooth. In questo modo, puoi scoprire altri dispositivi Bluetooth, eseguire query su un elenco di dispositivi collegati (accoppiati), creare un'istanza di BluetoothDevice
utilizzando un indirizzo MAC noto e creare un BluetoothServerSocket
per ascoltare le comunicazioni da altri dispositivi.
BluetoothDevice
- Rappresenta un dispositivo Bluetooth remoto. Utilizzalo per richiedere una connessione con un
dispositivo remoto tramite un
BluetoothSocket
o per eseguire query su informazioni sul dispositivo, come nome, indirizzo, classe e stato di collegamento.
BluetoothSocket
- Rappresenta l'interfaccia di una presa Bluetooth (simile a un TCP
Socket
). Si tratta del punto di connessione che consente a un'app di scambiare dati con un altro dispositivo Bluetooth utilizzando InputStream
e OutputStream
.
BluetoothServerSocket
- Rappresenta un socket server aperto in ascolto delle richieste in arrivo (simile
a un protocollo TCP
ServerSocket
). Per
connettere due dispositivi, un dispositivo deve aprire un socket server con questa
classe. Quando un dispositivo Bluetooth remoto effettua una richiesta di connessione a questo dispositivo, il dispositivo accetta la connessione e restituisce un dispositivo BluetoothSocket
connesso.
BluetoothClass
- Descrive le caratteristiche e le funzionalità generali di un dispositivo Bluetooth.
Si tratta di un insieme di proprietà di sola lettura che definisce le classi e i servizi del dispositivo. Sebbene queste informazioni forniscano un utile suggerimento relativo al tipo di dispositivo, gli attributi di questa classe non descrivono necessariamente tutti i profili e i servizi Bluetooth supportati dal dispositivo.
BluetoothProfile
- Un'interfaccia che rappresenta un profilo Bluetooth. Un profilo Bluetooth è una specifica dell'interfaccia wireless per la comunicazione basata su Bluetooth tra dispositivi. Un esempio è il profilo Vivavoce. Per ulteriori informazioni sui profili, consulta Profili Bluetooth.
BluetoothHeadset
- Supporta le cuffie Bluetooth per l'utilizzo con i cellulari. Sono inclusi sia il profilo per cuffie Bluetooth sia il profilo vivavoce (v1.5).
BluetoothA2dp
- Definisce come l'audio di alta qualità può essere trasmesso in streaming da un dispositivo all'altro tramite una connessione Bluetooth utilizzando A2DP (Advanced Audio Distribution Profile).
BluetoothHealth
- Rappresenta un proxy per il profilo del dispositivo sanitario che controlla il servizio Bluetooth.
BluetoothHealthCallback
- Una classe astratta che puoi utilizzare per implementare i callback
BluetoothHealth
. Devi estendere questa classe e implementare i metodi di callback per ricevere aggiornamenti sulle modifiche allo stato di registrazione dell'app e allo stato del canale Bluetooth.
BluetoothHealthAppConfiguration
- Rappresenta una configurazione dell'app che l'app di terze parti Bluetooth Health registra per comunicare con un dispositivo di integrità Bluetooth remoto.
BluetoothProfile.ServiceListener
- Un'interfaccia che avvisa i client di
BluetoothProfile
di comunicazione tra processi (IPC) quando sono connessi o disconnessi dal servizio interno che esegue un determinato profilo.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-26 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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."]]