Bluetooth-Profile

Die Bluetooth API unterstützt die Arbeit mit Bluetooth-Profilen. A Das Bluetooth-Profil ist eine Spezifikation für drahtlose Schnittstellen für Bluetooth-basierte Kommunikation zwischen Geräten, z. B. das Freisprech-Profil. Für ein Mobilgerät mit einem kabellosen Headset verbinden können, müssen beide Geräte den Hands-Free-Profil.

Die Bluetooth API bietet Implementierungen für die folgenden Bluetooth-Funktionen: Profilen:

  • Headset: Das Headset-Profil unterstützt Bluetooth-Headsets, Mobiltelefonen verwendet werden. Android bietet Klasse BluetoothHeadset, ein Proxy zur Steuerung des Bluetooth-Headset-Dienstes. Dazu gehören die Profile „Bluetooth-Headset“ und „Hands-Free (v1.5)“ verwenden. Das BluetoothHeadset unterstützt AT-Befehle. Weitere Informationen zu diesem Thema finden Sie unter Anbieterspezifische AT-Befehle.
  • A2DP: Das A2DP-Profil (Advanced Audio Distribution Profile) legt fest, Audio in hoher Qualität kann über Bluetooth von einem Gerät auf ein anderes gestreamt werden. Android bietet BluetoothA2dp-Klasse, die einen Proxy zur Steuerung des Bluetooth A2DP-Dienstes.
  • Gesundheitsgerät. Android bietet Unterstützung für das Bluetooth Health-Gerät Profile (HDP). Damit kannst du Apps erstellen, die über Bluetooth kommunizieren mit Gesundheitsgeräten, die Bluetooth unterstützen, wie Herzfrequenzmesser, Blut Meter, Thermometer, Waagen usw. Eine Liste der unterstützten Geräte und die entsprechenden Codes für die Gerätedatenspezialisierung finden Sie unter HDP von Bluetooth Gerätedaten Spezialisierungen. Auf diese Werte wird auch in der ISO/IEEE 11073-20601 [7]-Spezifikation verwiesen als MDC_DEV_SPEC_PROFILE_* im Anhang zu den Nomenklaturcodes. Weitere Informationen Informationen zum HDP findest du unter Health Device Profile.

Dies sind die grundlegenden Schritte für die Arbeit mit einem Profil:

  1. Rufen Sie den Standardadapter ab, wie unter Bluetooth-Einrichtung
  2. Richten Sie ein BluetoothProfile.ServiceListener Dieser Listener benachrichtigt BluetoothProfile-Clients wenn sie mit dem Dienst verbunden sind oder vom Dienst getrennt wurden.
  3. Verwenden Sie getProfileProxy() zum Herstellen einer Verbindung zum Profil-Proxy-Objekt, das mit dem zu erstellen. Im folgenden Beispiel ist das Profil-Proxy-Objekt eine Instanz von BluetoothHeadset
  4. In onServiceConnected(), Rufen Sie ein Handle zum Profil-Proxy-Objekt ab.
  5. Sobald Sie das Profil-Proxy-Objekt haben, können Sie damit den Status des und andere Vorgänge ausführen, die für dieses Profil relevant sind.

Das folgende Code-Snippet zeigt, wie eine Verbindung zu einem BluetoothHeadset-Proxy hergestellt wird -Objekt, damit Sie das Headset-Profil steuern können:

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

Anbieterspezifische AT-Befehle

Apps können sich für den Empfang von SystemBroadcasts vordefinierter anbieterspezifischer AT registrieren Befehle, die über Headsets gesendet werden (z. B. „+XEVENT“-Befehl von Plantronics) Beispiel: Eine App könnte Broadcasts empfangen, die den Akkustand eines verbundenen Geräts anzeigen und den Nutzer benachrichtigen oder bei Bedarf andere Maßnahmen ergreifen. Übertragung erstellen für den ACTION_VENDOR_SPECIFIC_HEADSET_EVENT zur Verarbeitung anbieterspezifischer AT-Befehle für das Headset vorgesehen.

Gesundheitsgeräteprofil

Android unterstützt das Bluetooth Health Device Profile (HDP). Bluetooth Health API enthält die Klassen BluetoothHealth, BluetoothHealthCallback, und BluetoothHealthAppConfiguration, die unter Wichtige Klassen und Oberflächen.

Bei der Verwendung der Bluetooth Health API ist es hilfreich, die folgenden wichtigen HDPs zu verstehen Konzepten:

Quelle
Ein Gesundheitsgerät wie eine Gewichtswaage, ein Blutzuckermessgerät oder Thermometer, die bzw. das medizinische Daten an ein Smart-Home-Gerät wie ein Android-Smartphone oder -Tablet übertragen.
Waschbecken
Das Smart-Home-Gerät, das die medizinischen Daten empfängt. In einer HDP-App Senke wird durch ein BluetoothHealthAppConfiguration-Objekt dargestellt.
Anmeldung
Der Prozess zum Registrieren einer Senke für die Kommunikation mit einem bestimmten Zustand Gerät.
Verbindung
Der Prozess, mit dem ein Kanal zwischen einem Gesundheitsgerät (Quelle) und einem Smart-Home-Gerät (Spüle).

HDP-Anwendung erstellen

Dies sind die grundlegenden Schritte zur Erstellung einer HDP-App:

  1. Rufen Sie einen Verweis auf das Proxy-Objekt BluetoothHealth ab. Wie bei normalen Headset und Geräten mit A2DP-Profilen verwenden, müssen Sie getProfileProxy() mit einem BluetoothProfile.ServiceListener und die HEALTH-Profiltyp , um eine Verbindung mit dem Profil-Proxy-Objekt herzustellen.

  2. BluetoothHealthCallback erstellen und Anwendungskonfiguration registrieren (BluetoothHealthAppConfiguration), die als Senke dient.

  3. Stelle eine Verbindung zu einem Gesundheitsgerät her.

  4. Wenn die Verbindung zu einem Systemzustand hergestellt wurde, kann der Status gelesen und geschrieben werden. mit dem Dateideskriptor. Die empfangenen Daten müssen interpretiert werden mit einem Health Manager, der die IEEE 11073- Spezifikationen.

  5. Wenn Sie fertig sind, schließen Sie den Kanal für Gesundheitsinformationen und heben Sie die Registrierung der App auf. Der Kanal wird bei längerer Inaktivität geschlossen.