Profili Bluetooth

L'API Bluetooth include il supporto per lavorare con i profili Bluetooth. R Il profilo Bluetooth è una specifica di interfaccia wireless per le la comunicazione tra dispositivi, ad esempio il profilo in vivavoce. Per un dispositivo mobile dispositivo per il collegamento a una cuffia wireless, entrambi i dispositivi devono supportare il Profilo in vivavoce.

L'API Bluetooth fornisce implementazioni per le seguenti profili:

  • Auricolari. Il profilo Cuffie supporta le cuffie Bluetooth utilizzati con i cellulari. Android offre BluetoothHeadset, che è un proxy per controllare il servizio cuffie Bluetooth. Sono inclusi profili Auricolare Bluetooth e Vivavoce (v1.5). BluetoothHeadset supporta i comandi AT. Per ulteriori informazioni su questo argomento, vedi Comandi AT specifici del fornitore.
  • A2DP. Il profilo A2DP (Advanced Audio Distribution Profile) definisce la modalità audio di alta qualità può essere riprodotto in streaming da un dispositivo all'altro tramite Bluetooth connessione. Android offre BluetoothA2dp, ovvero un proxy per il controllo del servizio Bluetooth A2DP.
  • Dispositivo sanitario. Android fornisce il supporto per Bluetooth Health Device Profilo (HDP). In questo modo puoi creare app che utilizzano il Bluetooth per comunicare con dispositivi sanitari che supportano il Bluetooth, come dispositivi per il monitoraggio del battito cardiaco, metri, termometri, bilance e così via. Per un elenco dei dispositivi supportati e i codici di specializzazione per i dati del dispositivo corrispondenti, vedi HDP del Bluetooth Dati dispositivo Specializzazioni. Questi valori sono riportati anche nelle specifiche ISO/IEEE 11073-20601 [7]. come MDC_DEV_SPEC_PROFILE_* nell'Allegato ai codici di nomenclatura. Per ulteriori informazioni informazioni su HDP, vedi Profilo del dispositivo sanitario.

Di seguito sono riportati i passaggi di base per lavorare con un profilo:

  1. Procurati l'adattatore predefinito, come descritto in Configurazione Bluetooth.
  2. Imposta un BluetoothProfile.ServiceListener Questo listener avvisa BluetoothProfile clienti quando sono connessi o disconnessi dal servizio.
  3. Utilizza le funzionalità di getProfileProxy() per stabilire una connessione all'oggetto proxy del profilo associato al profilo. Nell'esempio seguente, l'oggetto proxy del profilo è un'istanza di BluetoothHeadset.
  4. Nella onServiceConnected(), ottenere un handle all'oggetto proxy del profilo.
  5. Una volta ottenuto l'oggetto proxy del profilo, utilizzalo per monitorare lo stato del connessione ed eseguire altre operazioni pertinenti a quel profilo.

Il seguente snippet di codice mostra come connettersi a un proxy BluetoothHeadset per 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 AT predefiniti del fornitore comandi inviati dagli auricolari (come un comando Plantronics +XEVENT). Ad esempio: un'app potrebbe ricevere annunci che indicano il livello della batteria di un dispositivo connesso e avvisare l'utente o intraprendere altre azioni, se necessario. Crea una trasmissione ricevitore per ACTION_VENDOR_SPECIFIC_HEADSET_EVENT per gestire i comandi AT specifici del fornitore per il visore.

Profilo dispositivo sanitario

Android supporta Bluetooth Health Device Profile (HDP). Bluetooth Health L'API include i corsi BluetoothHealth, BluetoothHealthCallback, e BluetoothHealthAppConfiguration, descritte in Classi chiave e interfacce.

Quando utilizzi l'API Bluetooth Health, è utile comprendere questi HDP chiave di base:

Origine
Un dispositivo per la salute, come una bilancia, un misuratore della glicemia o un termometro, che trasmette dati medici a uno smart device, come 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.
Registrazione
La procedura utilizzata per registrare un sink per comunicare con un determinato stato di salute .
Connessione
La procedura utilizzata per aprire un canale tra un dispositivo sanitario (fonte) e un smart device (lavandino).

Crea un'app HDP

Di seguito sono riportati i passaggi di base per la creazione di un'app HDP:

  1. Ottieni un riferimento all'oggetto proxy BluetoothHealth. Come per i normali cuffie e dispositivi con profilo A2DP, devi chiamare getProfileProxy() con un BluetoothProfile.ServiceListener e Tipo di profilo HEALTH per stabilire una connessione con l'oggetto proxy del profilo.

  2. Crea un BluetoothHealthCallback e registra una configurazione dell'app (BluetoothHealthAppConfiguration) che funge da sink di integrità.

  3. Stabilisci una connessione a un dispositivo per la salute.

  4. Se connesso correttamente a un dispositivo sanitario, leggi e scrivi sullo stato dispositivo utilizzando il descrittore del file. I dati ricevuti devono essere interpretati utilizzando un responsabile sanitario, che implementa lo standard IEEE 11073 specifiche.

  5. Al termine, chiudi il canale Salute e annulla la registrazione dell'app. Inoltre, il canale si chiude in caso di inattività prolungata.