Panoramica Bluetooth

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.