Profil Bluetooth

Bluetooth API menyertakan dukungan untuk bekerja dengan profil Bluetooth. Profil Bluetooth adalah spesifikasi antarmuka nirkabel untuk komunikasi berbasis Bluetooth antar-perangkat, seperti profil Hands-Free. Agar perangkat seluler dapat terhubung ke headset nirkabel, kedua perangkat harus mendukung profil Hands-Free.

Bluetooth API menyediakan implementasi untuk profil Bluetooth berikut:

  • Headset. Profil Headset menyediakan dukungan untuk headset Bluetooth yang akan digunakan dengan ponsel. Android menyediakan class BluetoothHeadset, yang merupakan proxy untuk mengontrol Layanan Bluetooth Headset. Fitur ini mencakup profil Bluetooth Headset dan Hands-Free (v1.5). Class BluetoothHeadset menyertakan dukungan untuk perintah AT. Untuk mendapatkan informasi lebih lanjut tentang topik ini, lihat Perintah AT khusus vendor.
  • A2DP. Profil Advanced Audio Distribution Profile (A2DP) menentukan cara audio berkualitas tinggi dapat di-streaming dari satu perangkat ke perangkat lainnya melalui koneksi Bluetooth. Android menyediakan class BluetoothA2dp, yang merupakan proxy untuk mengontrol Layanan Bluetooth A2DP.
  • Perangkat Kesehatan. Android memberikan dukungan untuk Profil Perangkat Kesehatan (HDP) Bluetooth. Hal ini memungkinkan Anda membuat aplikasi yang menggunakan Bluetooth untuk berkomunikasi dengan perangkat kesehatan yang mendukung Bluetooth, seperti pemantau detak jantung, pengukur darah, termometer, timbangan, dan sebagainya. Untuk daftar perangkat yang didukung dan kode spesialisasi data perangkat yang sesuai, lihat Spesialisasi Data Perangkat HDP Bluetooth. Nilai ini juga direferensikan dalam spesifikasi ISO/IEEE 11073-20601 [7] sebagai MDC_DEV_SPEC_PROFILE_* dalam Lampiran Kode Nomenklatur. Untuk informasi selengkapnya tentang HDP, lihat Profil Perangkat Kesehatan.

Berikut adalah langkah-langkah dasar untuk bekerja dengan profil:

  1. Dapatkan adaptor default, seperti yang dijelaskan dalam Penyiapan Bluetooth.
  2. Siapkan BluetoothProfile.ServiceListener. Pemroses ini memberi tahu klien BluetoothProfile saat mereka terhubung ke atau terputus dari layanan.
  3. Gunakan getProfileProxy() untuk menghubungkan ke objek proxy profil yang terkait dengan profil. Pada contoh berikut, objek proxy profil adalah instance BluetoothHeadset.
  4. Di onServiceConnected(), dapatkan handle untuk objek proxy profil.
  5. Setelah Anda memiliki objek proxy profil, gunakan objek tersebut untuk memantau status koneksi dan melakukan operasi lain yang relevan dengan profil tersebut.

Cuplikan kode berikut menunjukkan cara menghubungkan ke objek proxy BluetoothHeadset sehingga Anda dapat mengontrol profil Headset:

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

Perintah AT khusus-vendor

Aplikasi dapat mendaftar untuk menerima siaran sistem dari perintah AT khusus vendor yang telah ditetapkan yang dikirim oleh headset (seperti perintah Plantronics +XEVENT). Misalnya, aplikasi dapat menerima siaran yang menunjukkan level baterai perangkat yang terhubung dan dapat memberi tahu pengguna atau melakukan tindakan lain sesuai kebutuhan. Buat penerima siaran untuk intent ACTION_VENDOR_SPECIFIC_HEADSET_EVENT guna menangani perintah AT khusus vendor untuk headset.

Health Device Profile

Android mendukung Bluetooth Health Device Profile (HDP). Bluetooth Health API mencakup class BluetoothHealth, BluetoothHealthCallback, dan BluetoothHealthAppConfiguration, yang dijelaskan dalam Class dan antarmuka utama.

Saat menggunakan Bluetooth Health API, sebaiknya pahami konsep utama HDP berikut:

Sumber
Perangkat kesehatan, seperti timbangan, pengukur glukosa, atau termometer, yang mengirimkan data medis ke perangkat smart, seperti ponsel atau tablet Android.
Sink
Perangkat smart yang menerima data medis. Dalam aplikasi HDP, sink direpresentasikan oleh objek BluetoothHealthAppConfiguration.
Pendaftaran
Proses yang digunakan untuk mendaftarkan sink guna berkomunikasi dengan perangkat kesehatan tertentu.
Connection (Kedekatan)
Proses yang digunakan untuk membuka saluran antara perangkat kesehatan (sumber) dan perangkat smart (sink).

Membuat aplikasi HDP

Berikut adalah langkah-langkah dasar yang terlibat dalam membuat aplikasi HDP:

  1. Dapatkan referensi ke objek proxy BluetoothHealth. Seperti headphone reguler dan perangkat profil A2DP, Anda harus memanggil getProfileProxy() dengan BluetoothProfile.ServiceListener dan jenis profil HEALTH untuk terhubung dengan objek proxy profil.

  2. Buat BluetoothHealthCallback dan daftarkan konfigurasi aplikasi (BluetoothHealthAppConfiguration) yang berfungsi sebagai sink kesehatan.

  3. Membangun koneksi ke perangkat kesehatan.

  4. Ketika berhasil terhubung ke perangkat kesehatan, baca dan tulis ke perangkat kesehatan menggunakan deskriptor file. Data yang diterima perlu ditafsirkan menggunakan pengelola kesehatan, yang menerapkan spesifikasi IEEE 11073.

  5. Setelah selesai, tutup saluran kesehatan dan batalkan pendaftaran aplikasi. Saluran juga ditutup jika tidak ada aktivitas dalam waktu lama.