Bluetooth profilleri

Bluetooth API, Bluetooth profilleriyle çalışmayı destekler. Bluetooth profili, Eller Serbest profili gibi cihazlar arasında Bluetooth tabanlı iletişim için kullanılan kablosuz arayüz spesifikasyonudur. Bir mobil cihazın kablosuz kulaklığa bağlanabilmesi için her iki cihazın da Eller Serbest profilini desteklemesi gerekir.

Bluetooth API, aşağıdaki Bluetooth profilleri için uygulamalar sağlar:

  • Mikrofonlu kulaklık. Mikrofonlu Kulaklık profili, cep telefonlarıyla kullanılacak Bluetooth kulaklıklar için destek sağlar. Android, Bluetooth Mikrofonlu Kulaklık Hizmeti'nin kontrolü için proxy olan BluetoothHeadset sınıfını sağlar. Buna hem Bluetooth Mikrofonlu Kulaklık hem de Eller Serbest (v1.5) profilleri dahildir. BluetoothHeadset sınıfı, AT komutlarını destekler. Bu konu hakkında daha fazla bilgi için Tedarikçi firmaya özel AT komutları bölümüne bakın.
  • A2DP. Gelişmiş Ses Dağıtım Profili (A2DP) profili, Bluetooth bağlantısı üzerinden bir cihazdan diğerine nasıl yüksek kaliteli ses akışı yapılabileceğini tanımlar. Android, Bluetooth A2DP Hizmeti'ni kontrol etmek için bir proxy olan BluetoothA2dp sınıfını sağlar.
  • Sağlık Cihazı. Android, Bluetooth Sağlık Cihazı Profili (HDP) için destek sağlar. Bu, nabız monitörleri, kan ölçerler, termometreler, tartılar gibi Bluetooth'u destekleyen sağlık cihazlarıyla iletişim kurmak için Bluetooth'u kullanan uygulamalar oluşturmanıza olanak tanır. Desteklenen cihazların listesi ve bunlara karşılık gelen cihaz verileri uzmanlık kodları için Bluetooth'un HDP Cihaz Verileri Uzmanlıkları bölümüne bakın. Bu değerlere, Nomenklatür Kodları Ek'inde MDC_DEV_SPEC_PROFILE_* olarak ISO/IEEE 11073-20601 [7] spesifikasyonunda da referans verilir. HDP hakkında daha fazla bilgi için Health Device Profile (Sağlık Cihazı Profili) bölümüne bakın.

Bir profille çalışmaya ilişkin temel adımlar şunlardır:

  1. Bluetooth kurulumu bölümünde açıklandığı şekilde varsayılan adaptörü alın.
  2. BluetoothProfile.ServiceListener kurun. Bu işleyici, hizmete bağlandıklarında veya hizmetin bağlantısı kesildiğinde BluetoothProfile istemcilerine bildirim gönderir.
  3. Profille ilişkili profil proxy nesnesiyle bağlantı kurmak için getProfileProxy() aracını kullanın. Aşağıdaki örnekte profil proxy nesnesi, BluetoothHeadset örneğinin bir örneğidir.
  4. onServiceConnected()'da profil proxy nesnesi için bir herkese açık kullanıcı adı alın.
  5. Profil proxy nesnesini oluşturduktan sonra bağlantının durumunu izlemek ve bu profille ilgili diğer işlemleri gerçekleştirmek için bu nesneyi kullanın.

Aşağıdaki kod snippet'i, Mikrofonlu Kulaklık profilini kontrol edebilmeniz için bir BluetoothHeadset proxy nesnesine nasıl bağlanacağınızı gösterir:

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

Tedarikçi firmaya özel AT komutları

Uygulamalar, mikrofonlu kulaklıklar tarafından gönderilen, tedarikçi firmaya özel önceden tanımlanmış AT komutlarının (Plantronics +XEVENT komutu gibi) sistem yayınlarını almak için kaydolabilir. Örneğin, bir uygulama bağlı bir cihazın pil seviyesini gösteren yayınlar alabilir ve kullanıcıyı bilgilendirebilir veya gerektiğinde başka bir işlem yapabilir. Başlık için tedarikçi firmaya özel AT komutlarını işlemek üzere ACTION_VENDOR_SPECIFIC_HEADSET_EVENT amacı için bir yayın alıcısı oluşturun.

Sağlık Cihazı Profili

Android, Bluetooth Sağlık Cihazı Profili'ni (HDP) destekler. Bluetooth Health API, Anahtar sınıflar ve arayüzler bölümünde açıklanan BluetoothHealth, BluetoothHealthCallback ve BluetoothHealthAppConfiguration sınıflarını içerir.

Bluetooth Health API'yi kullanırken şu temel HDP kavramlarını anlamak faydalıdır:

Kaynak
Tıbbi verileri Android telefon veya tablet gibi akıllı cihazlara ileten bir sağlık cihazı (ör. tartı, glikoz ölçüm cihazı veya termometre).
Lavabo
Tıbbi verileri alan akıllı cihaz. Bir HDP uygulamasında lavabo bir BluetoothHealthAppConfiguration nesnesiyle temsil edilir.
Kayıt
Belirli bir sağlık cihazıyla iletişim kurmak için havuzunu kaydetmek için kullanılan süreç.
Bağ
Sağlık cihazı (kaynak) ve akıllı cihaz (lavabo) arasında kanal açmak için kullanılan süreç.

HDP uygulaması oluşturun

HDP uygulaması oluşturmayla ilgili temel adımlar şunlardır:

  1. BluetoothHealth proxy nesnesine bir referans alın. Normal mikrofonlu kulaklık ve A2DP profili cihazlarında olduğu gibi, profil proxy nesnesiyle bağlantı kurmak için BluetoothProfile.ServiceListener ve HEALTH profil türüyle getProfileProxy() çağırmanız gerekir.

  2. Bir BluetoothHealthCallback oluşturun ve durum havuzu görevi gören bir uygulama yapılandırmasını (BluetoothHealthAppConfiguration) kaydedin.

  3. Sağlık cihazıyla bağlantı kurun.

  4. Sağlık cihazına başarıyla bağlandıktan sonra dosya tanımlayıcıyı kullanarak sağlık cihazında okuma ve yazma işlemleri gerçekleştirin. Alınan verilerin, IEEE 11073 spesifikasyonlarını uygulayan bir durum yöneticisi tarafından yorumlanması gerekir.

  5. İşlem tamamlandığında, sağlık kanalını kapatın ve uygulamanın kaydını iptal edin. Uzun süre etkinlik olmadığında kanal da kapatılır.