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). ClassBluetoothHeadset
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:
- Dapatkan adaptor default, seperti yang dijelaskan dalam Penyiapan Bluetooth.
- Siapkan
BluetoothProfile.ServiceListener
. Pemroses ini memberi tahu klienBluetoothProfile
saat mereka terhubung ke atau terputus dari layanan. - Gunakan
getProfileProxy()
untuk menghubungkan ke objek proxy profil yang terkait dengan profil. Pada contoh berikut, objek proxy profil adalah instanceBluetoothHeadset
. - Di
onServiceConnected()
, dapatkan handle untuk objek proxy profil. - 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:
Dapatkan referensi ke objek proxy
BluetoothHealth
. Seperti headphone reguler dan perangkat profil A2DP, Anda harus memanggilgetProfileProxy()
denganBluetoothProfile.ServiceListener
dan jenis profilHEALTH
untuk terhubung dengan objek proxy profil.Buat
BluetoothHealthCallback
dan daftarkan konfigurasi aplikasi (BluetoothHealthAppConfiguration
) yang berfungsi sebagai sink kesehatan.Membangun koneksi ke perangkat kesehatan.
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.
Setelah selesai, tutup saluran kesehatan dan batalkan pendaftaran aplikasi. Saluran juga ditutup jika tidak ada aktivitas dalam waktu lama.