Profile Bluetooth

Interfejs Bluetooth API zapewnia obsługę profili Bluetooth. Profil Bluetooth to specyfikacja interfejsu bezprzewodowego do komunikacji między urządzeniami za pomocą Bluetootha, np. profil trybu zestawu głośnomówiącego. Aby można było połączyć urządzenie mobilne z bezprzewodowym zestawem słuchawkowym, oba urządzenia muszą obsługiwać profil trybu głośnomówiącego.

Interfejs Bluetooth API udostępnia implementacje tych profili Bluetooth:

  • Zestaw słuchawkowy. Profil zestawu słuchawkowego obsługuje zestawy słuchawkowe Bluetooth, których można używać z telefonami komórkowymi. Android udostępnia klasę BluetoothHeadset, która stanowi serwer proxy do sterowania usługą zestawu słuchawkowego Bluetooth. Dotyczy to zarówno profili zestawu słuchawkowego Bluetooth, jak i profili w trybie głośnomówiącym (v1.5). Klasa BluetoothHeadset obejmuje obsługę poleceń AT. Więcej informacji na ten temat znajdziesz w artykule Polecenia AT właściwe dla dostawców.
  • A2DP Profil A2DP (Advanced Audio Distribution Profile) określa, w jaki sposób wysokiej jakości dźwięk może być przesyłany strumieniowo z jednego urządzenia na drugie przez połączenie Bluetooth. Android udostępnia klasę BluetoothA2dp, która stanowi serwer proxy do sterowania usługą Bluetooth A2DP.
  • Urządzenie do zarządzania zdrowiem. Android zapewnia obsługę profilu Bluetooth Health Device Profile (HDP). Dzięki temu możesz tworzyć aplikacje używające Bluetootha do komunikacji z urządzeniami obsługującymi tę funkcję – np. pulsometrem, krwiomierzami, termometrami, wagami itd. Listę obsługiwanych urządzeń i odpowiadających im kodów specjalizacji danych z urządzenia znajdziesz w artykule Specjalizacje danych urządzenia HDP. Wartości te są również wymienione w specyfikacji ISO/IEEE 11073-20601 [7] jako MDC_DEV_SPEC_PROFILE_* w Załączniku do kodów nomenclature Codes. Więcej informacji na temat HDP znajdziesz w artykule Health Device Profile.

Oto podstawowe czynności, jakie należy wykonać podczas pracy z profilem:

  1. Pobierz domyślną przejściówkę zgodnie z opisem w sekcji Konfiguracja Bluetooth.
  2. Skonfiguruj BluetoothProfile.ServiceListener. Ten detektor powiadamia klienty BluetoothProfile, gdy zostały one połączone z usługą lub od niej odłączone.
  3. Użyj getProfileProxy(), aby nawiązać połączenie z obiektem serwera proxy profilu powiązanym z profilem. W tym przykładzie obiekt serwera proxy profilu jest wystąpieniem obiektu BluetoothHeadset.
  4. W onServiceConnected() uzyskaj uchwyt do obiektu serwera proxy profilu.
  5. Po utworzeniu obiektu serwera proxy profilu możesz za jego pomocą monitorować stan połączenia i wykonywać inne operacje związane z tym profilem.

Poniższy fragment kodu pokazuje, jak nawiązać połączenie z obiektem serwera proxy BluetoothHeadset, aby móc sterować profilem zestawu słuchawkowego:

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);

Polecenia AT właściwe dla poszczególnych dostawców

Aplikacje mogą się zarejestrować, aby odbierać komunikaty systemowe wstępnie zdefiniowanych poleceń AT konkretnego dostawcy, które są wysyłane przez zestawy słuchawkowe (np. polecenie Plantronics +XEVENT). Aplikacja może na przykład odbierać komunikaty informujące o stanie baterii połączonego urządzenia i powiadamiać użytkownika oraz wykonywać w razie potrzeby inne działania. Utwórz odbiornika na potrzeby ACTION_VENDOR_SPECIFIC_HEADSET_EVENT do obsługi poleceń AT dotyczących konkretnego dostawcy zestawu słuchawkowego.

Profil urządzenia zdrowotnego

Android obsługuje Bluetooth Health Device Profile (HDP). Bluetooth Health API obejmuje klasy BluetoothHealth, BluetoothHealthCallback i BluetoothHealthAppConfiguration, które są opisane w sekcji Klasy i interfejsy kluczy.

Podczas korzystania z interfejsu Bluetooth Health API warto znać kluczowe pojęcia HDP:

Źródło
Urządzenia zdrowotne, takie jak waga, glukometr lub termometr, które przesyłają dane medyczne do urządzenia takiego jak telefon lub tablet z Androidem.
Umywalka
Urządzenie, które odbiera dane medyczne. W aplikacji HDP ujście jest reprezentowane przez obiekt BluetoothHealthAppConfiguration.
Rejestracja
Proces używany do rejestrowania ujścia w celu komunikacji z danym urządzeniem stanu.
Związek emocjonalny
Proces służący do otwierania kanału między urządzeniem do sprawdzania stanu (źródło) a inteligentnym urządzeniem (ujściem).

Utwórz aplikację HDP

Oto podstawowe kroki tworzenia aplikacji HDP:

  1. Uzyskaj odniesienie do obiektu serwera proxy BluetoothHealth. Tak jak w przypadku zwykłych zestawów słuchawkowych i urządzeń z profilem A2DP, musisz wywołać getProfileProxy() z typem BluetoothProfile.ServiceListener i HEALTH, aby nawiązać połączenie z obiektem serwera proxy profilu.

  2. Utwórz BluetoothHealthCallback i zarejestruj konfigurację aplikacji (BluetoothHealthAppConfiguration), która działa jako ujście stanu.

  3. Nawiąż połączenie z urządzeniem do monitorowania stanu zdrowia.

  4. Po nawiązaniu połączenia z urządzeniem do sprawdzania stanu zdrowia będzie można odczytywać dane i zapisywać na nim dane za pomocą deskryptora plików. Otrzymane dane należy interpretować za pomocą menedżera ds. zdrowia, który implementuje specyfikacje IEEE 11073.

  5. Gdy skończysz, zamknij kanał o zdrowiu i wyrejestruj aplikację. Kanał zostanie też zamknięty po dłuższym okresie braku aktywności.