L'API Bluetooth include il supporto per i profili Bluetooth. Un profilo Bluetooth è una specifica di interfaccia wireless per la comunicazione basata su Bluetooth tra dispositivi, ad esempio il profilo Vivavoce. Affinché un dispositivo mobile possa collegarsi a cuffie wireless, entrambi i dispositivi devono supportare il profilo vivavoce.
L'API Bluetooth fornisce implementazioni per i seguenti profili Bluetooth:
- Cuffie. Il profilo Cuffie supporta l'uso di cuffie Bluetooth con i cellulari. Android fornisce la classe
BluetoothHeadset
, che è un proxy per il controllo del servizio cuffie Bluetooth. Sono inclusi i profili per cuffie Bluetooth e vivavoce (v1.5). La classeBluetoothHeadset
include il supporto per i comandi AT. Per saperne di più su questo argomento, consulta Comandi AT specifici del fornitore. - A2DP. Il profilo A2DP (Advanced Audio Distribution Profile) definisce la modalità di streaming dell'audio di alta qualità da un dispositivo all'altro tramite una connessione Bluetooth. Android fornisce la classe
BluetoothA2dp
, che è un proxy per il controllo del servizio Bluetooth A2DP. - Dispositivo sanitario. Android fornisce supporto per il profilo HDP (Bluetooth Health Device Profile). In questo modo puoi creare app che utilizzano il Bluetooth per comunicare con dispositivi per la salute che supportano il Bluetooth, come rilevatori del battito cardiaco, misuratori del sangue, termometri, bilance e così via. Per un elenco dei dispositivi supportati e dei corrispondenti codici di specializzazione dei dati del dispositivo, consulta le Specializzazioni dei dati dei dispositivi HDP di Bluetooth.
Questi valori sono inoltre riportati nella specifica ISO/IEEE 11073-20601 [7] come
MDC_DEV_SPEC_PROFILE_*
nell'allegato dei codici della nomenclatura. Per ulteriori informazioni sull'HDP, consulta la sezione Profilo del dispositivo sanitario.
Di seguito sono riportati i passaggi di base per lavorare con un profilo:
- Procurati l'adattatore predefinito, come descritto nella sezione Configurazione Bluetooth.
- Configura una
BluetoothProfile.ServiceListener
. Questo listener notifica i clientBluetoothProfile
quando sono stati connessi o disconnessi dal servizio. - Utilizza
getProfileProxy()
per stabilire una connessione all'oggetto proxy del profilo associato al profilo. Nell'esempio seguente, l'oggetto proxy del profilo è un'istanza diBluetoothHeadset
. - In
onServiceConnected()
, recupera un handle per l'oggetto proxy del profilo. - Una volta ottenuto l'oggetto proxy del profilo, utilizzalo per monitorare lo stato della connessione ed eseguire altre operazioni pertinenti al profilo.
Il seguente snippet di codice mostra come connetterti a un oggetto proxy BluetoothHeadset
per poter controllare il profilo Cuffie:
Kotlin
var bluetoothHeadset: BluetoothHeadset? = null // Get the default adapter val bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter() private val profileListener = object : BluetoothProfile.ServiceListener { override fun onServiceConnected(profile: Int, proxy: BluetoothProfile) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = proxy as BluetoothHeadset } } override fun onServiceDisconnected(profile: Int) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = null } } } // Establish connection to the proxy. bluetoothAdapter?.getProfileProxy(context, profileListener, BluetoothProfile.HEADSET) // ... call functions on bluetoothHeadset // Close proxy connection after use. bluetoothAdapter?.closeProfileProxy(BluetoothProfile.HEADSET, bluetoothHeadset)
Java
BluetoothHeadset bluetoothHeadset; // Get the default adapter BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); private BluetoothProfile.ServiceListener profileListener = new BluetoothProfile.ServiceListener() { public void onServiceConnected(int profile, BluetoothProfile proxy) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = (BluetoothHeadset) proxy; } } public void onServiceDisconnected(int profile) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = null; } } }; // Establish connection to the proxy. bluetoothAdapter.getProfileProxy(context, profileListener, BluetoothProfile.HEADSET); // ... call functions on bluetoothHeadset // Close proxy connection after use. bluetoothAdapter.closeProfileProxy(bluetoothHeadset);
Comandi AT specifici del fornitore
Le app possono registrarsi per ricevere trasmissioni di sistema di comandi AT predefiniti specifici del fornitore inviati da cuffie (come un comando Plantronics +XEVENT). Ad esempio, un'app potrebbe ricevere annunci che indicano il livello della batteria di un dispositivo connesso e potrebbe inviare una notifica all'utente o intraprendere altre azioni a seconda delle necessità. Crea un ricevitore
trasmesso per l'intent
ACTION_VENDOR_SPECIFIC_HEADSET_EVENT
al fine di gestire comandi AT specifici del fornitore per le cuffie.
Profilo dispositivo per la salute
Android supporta Bluetooth Health Device Profile (HDP). L'API Bluetooth Health include le classi BluetoothHealth
, BluetoothHealthCallback
e BluetoothHealthAppConfiguration
, descritte in Classi e interfacce chiave.
Quando si utilizza l'API Bluetooth Health, è utile comprendere i seguenti concetti chiave dell'HDP:
- Fonte
- Un dispositivo per la salute, ad esempio una bilancia, un misuratore della glicemia o un termometro, che trasmette dati medici a uno smart device, ad esempio uno smartphone o un tablet Android.
- Lavello
- Lo smart device che riceve i dati medici. In un'app HDP, il sink è rappresentato da un oggetto
BluetoothHealthAppConfiguration
. - Iscrizione
- Il processo utilizzato per registrare un sink per la comunicazione con un determinato dispositivo sanitario.
- Connessione
- La procedura utilizzata per aprire un canale tra un dispositivo sanitario (sorgente) e uno smart device (sink).
Crea un'app HDP
Di seguito sono riportati i passaggi di base necessari per la creazione di un'app HDP:
Recupera un riferimento all'oggetto proxy
BluetoothHealth
. Come per i normali dispositivi con cuffie e con profilo A2DP, devi chiamaregetProfileProxy()
conBluetoothProfile.ServiceListener
e il tipo di profiloHEALTH
per stabilire una connessione con l'oggetto proxy del profilo.Crea un
BluetoothHealthCallback
e registra una configurazione dell'app (BluetoothHealthAppConfiguration
) che funge da sink.Stabilisci una connessione a un dispositivo per l'integrità.
Una volta eseguita correttamente la connessione a un dispositivo per l'integrità, leggi e scrivi sul dispositivo per l'integrità utilizzando il descrittore del file. I dati ricevuti devono essere interpretati utilizzando un gestore sanitario, che implementa le specifiche dell'IEEE 11073.
Al termine, chiudi il canale sanitario e annulla la registrazione dell'app. Il canale si chiude anche in caso di inattività prolungata.