Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Bluetooth API menyertakan dukungan untuk menggunakan profil Bluetooth. J
Profil Bluetooth adalah spesifikasi antarmuka nirkabel untuk berbasis Bluetooth
komunikasi antar perangkat, seperti profil Hands-Free. Untuk perangkat seluler
untuk tersambung ke headset nirkabel, kedua perangkat harus mendukung
Profil Handsfree.
Bluetooth API menyediakan implementasi untuk kode
profil:
Headset. Profil Headset menyediakan dukungan bagi headset Bluetooth agar
digunakan untuk ponsel. Android menyediakan
Class BluetoothHeadset,
yang merupakan {i>proxy<i} untuk mengontrol Layanan Headset Bluetooth. Hal ini mencakup
profil Headset Bluetooth dan Hands-Free (v1.5). BluetoothHeadset
menyertakan dukungan untuk perintah AT. Untuk informasi selengkapnya 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 Bluetooth
koneksi jarak jauh. Android menyediakan
Class BluetoothA2dp, yang merupakan
{i>proxy<i} untuk mengontrol
Layanan Bluetooth A2DP.
Perangkat Kesehatan. Android menyediakan dukungan untuk Perangkat Bluetooth Health
Profil (HDP). Izin ini memungkinkan Anda membuat aplikasi yang menggunakan Bluetooth untuk berkomunikasi
dengan perangkat kesehatan yang mendukung Bluetooth, seperti pemantau detak jantung, darah
meter, termometer, timbangan, dan sebagainya. Untuk daftar perangkat yang didukung dan
kode spesialisasi data perangkat yang sesuai, lihat HDP Bluetooth
Data Perangkat
Spesialisasi.
Nilai-nilai ini juga dirujuk dalam spesifikasi ISO/IEEE 11073-20601 [7]
sebagai MDC_DEV_SPEC_PROFILE_* dalam Lampiran Kode Nomenklatur. Untuk selengkapnya
melihat informasi tentang HDP, lihat Profil Perangkat Kesehatan.
Berikut adalah langkah-langkah dasar untuk bekerja dengan profil:
Gunakan
getProfileProxy()
untuk membuat koneksi ke objek proxy profil yang terkait dengan
untuk profil. Dalam contoh berikut, objek proxy profil adalah instance dari
BluetoothHeadset.
Di beberapa
onServiceConnected(),
mendapatkan {i>handle<i}
untuk objek {i>proxy<i} profil.
Setelah Anda memiliki objek proxy profil, gunakan objek tersebut untuk memantau status
yang terhubung dan melakukan operasi lain
yang relevan dengan profil tersebut.
Cuplikan kode berikut menunjukkan cara terhubung ke proxy BluetoothHeadset
sehingga Anda dapat mengontrol profil Headset:
Kotlin
varbluetoothHeadset:BluetoothHeadset? =null// Get the default adaptervalbluetoothAdapter:BluetoothAdapter? =BluetoothAdapter.getDefaultAdapter()privatevalprofileListener=object:BluetoothProfile.ServiceListener{overridefunonServiceConnected(profile:Int,proxy:BluetoothProfile){if(profile==BluetoothProfile.HEADSET){bluetoothHeadset=proxyasBluetoothHeadset}}overridefunonServiceDisconnected(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
BluetoothHeadsetbluetoothHeadset;// Get the default adapterBluetoothAdapterbluetoothAdapter=BluetoothAdapter.getDefaultAdapter();privateBluetoothProfile.ServiceListenerprofileListener=newBluetoothProfile.ServiceListener(){publicvoidonServiceConnected(intprofile,BluetoothProfileproxy){if(profile==BluetoothProfile.HEADSET){bluetoothHeadset=(BluetoothHeadset)proxy;}}publicvoidonServiceDisconnected(intprofile){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 AT khusus vendor yang telah ditentukan sebelumnya
perintah yang dikirimkan oleh headset (seperti perintah Plantronics +XEVENT). Misalnya,
aplikasi dapat menerima siaran yang menunjukkan level baterai perangkat yang terhubung
dan dapat memberi tahu pengguna atau
mengambil tindakan lain yang diperlukan. Membuat siaran
penerima untuk
ACTION_VENDOR_SPECIFIC_HEADSET_EVENT
maksud menangani perintah AT khusus
vendor untuk headset.
Saat menggunakan Bluetooth Health API, sebaiknya pahami HDP kunci ini
konsep:
Sumber
Alat kesehatan, seperti timbangan, pengukur glukosa, atau termometer, yang
mentransmisikan data medis ke perangkat smart, seperti ponsel atau tablet Android.
Sink
Perangkat smart yang menerima data medis. Dalam aplikasi HDP,
sink diwakili oleh objek BluetoothHealthAppConfiguration.
Pendaftaran
Proses yang digunakan untuk mendaftarkan sink guna berkomunikasi dengan kesehatan tertentu
perangkat seluler.
Koneksi
Proses yang digunakan untuk membuka saluran antara perangkat kesehatan (sumber) dan
perangkat smart (wastafel).
Membuat aplikasi HDP
Berikut adalah langkah-langkah dasar yang diperlukan untuk membuat aplikasi HDP:
Dapatkan referensi ke objek proxy BluetoothHealth. Seperti biasanya
headset dan perangkat profil A2DP, Anda harus memanggil getProfileProxy() dengan
BluetoothProfile.ServiceListener dan
Jenis profil HEALTH
untuk membuat koneksi dengan objek proxy profil.
Membuat BluetoothHealthCallback dan mendaftarkan konfigurasi aplikasi
(BluetoothHealthAppConfiguration) yang bertindak sebagai sink kesehatan.
Membangun koneksi ke perangkat kesehatan.
Saat berhasil terhubung ke perangkat kesehatan, baca dan tulis ke perangkat kesehatan
perangkat tertentu menggunakan deskriptor file. Data yang diterima perlu ditafsirkan
menggunakan manajer kesehatan, yang menerapkan IEEE 11073
spesifikasi.
Setelah selesai, tutup saluran kesehatan dan batalkan pendaftaran aplikasi. Channel ini juga
akan ditutup saat tidak ada aktivitas dalam waktu lama.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-07-27 UTC."],[],[],null,["# Bluetooth profiles\n\nThe Bluetooth API includes support for working with Bluetooth profiles. A\nBluetooth profile is a wireless interface specification for Bluetooth-based\ncommunication between devices, such as the Hands-Free profile. For a mobile\ndevice to connect to a wireless headset, both devices must support the\nHands-Free profile.\n\nThe Bluetooth API provides implementations for the following Bluetooth\nprofiles:\n\n- **Headset** . The Headset profile provides support for Bluetooth headsets to be used with mobile phones. Android provides the [`BluetoothHeadset`](/reference/android/bluetooth/BluetoothHeadset) class, which is a proxy for controlling the Bluetooth Headset Service. This includes both Bluetooth Headset and Hands-Free (v1.5) profiles. The `BluetoothHeadset` class includes support for AT commands. For more on this topic, see [Vendor-specific AT commands](#at-commands).\n- **A2DP** . The Advanced Audio Distribution Profile (A2DP) profile defines how high-quality audio can be streamed from one device to another over a Bluetooth connection. Android provides the [`BluetoothA2dp`](/reference/android/bluetooth/BluetoothA2dp) class, which is a proxy for controlling the Bluetooth A2DP Service.\n- **Health Device** . Android provides support for the Bluetooth Health Device Profile (HDP). This lets you create apps that use Bluetooth to communicate with health devices that support Bluetooth, such as heart-rate monitors, blood meters, thermometers, scales, and so on. For a list of supported devices and their corresponding device data specialization codes, see [Bluetooth's HDP\n Device Data\n Specializations](https://www.bluetooth.com/specifications/assigned-numbers/health-device-profile). These values are also referenced in the ISO/IEEE 11073-20601 \\[7\\] specification as `MDC_DEV_SPEC_PROFILE_*` in the Nomenclature Codes Annex. For more information about HDP, see [Health Device Profile](#health-profile).\n\nHere are the basic steps for working with a profile:\n\n1. Get the default adapter, as described in [Bluetooth setup](/develop/connectivity/bluetooth/setup).\n2. Set up a [`BluetoothProfile.ServiceListener`](/reference/android/bluetooth/BluetoothProfile.ServiceListener). This listener notifies [`BluetoothProfile`](/reference/android/bluetooth/BluetoothProfile) clients when they have been connected to or disconnected from the service.\n3. Use [`getProfileProxy()`](/reference/android/bluetooth/BluetoothAdapter#getProfileProxy(android.content.Context,%20android.bluetooth.BluetoothProfile.ServiceListener,%20int)) to establish a connection to the profile proxy object associated with the profile. In the following example, the profile proxy object is an instance of `BluetoothHeadset`.\n4. In [`onServiceConnected()`](/reference/android/bluetooth/BluetoothProfile.ServiceListener#onServiceConnected(int,%20android.bluetooth.BluetoothProfile)), get a handle to the profile proxy object.\n5. Once you have the profile proxy object, use it to monitor the state of the connection and perform other operations that are relevant to that profile.\n\nThe following code snippet shows how to connect to a `BluetoothHeadset` proxy\nobject so that you can control the Headset profile: \n\n### Kotlin\n\n```kotlin\nvar bluetoothHeadset: BluetoothHeadset? = null\n\n// Get the default adapter\nval bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter()\n\nprivate val profileListener = object : BluetoothProfile.ServiceListener {\n\n override fun onServiceConnected(profile: Int, proxy: BluetoothProfile) {\n if (profile == BluetoothProfile.HEADSET) {\n bluetoothHeadset = proxy as BluetoothHeadset\n }\n }\n\n override fun onServiceDisconnected(profile: Int) {\n if (profile == BluetoothProfile.HEADSET) {\n bluetoothHeadset = null\n }\n }\n}\n\n// Establish connection to the proxy.\nbluetoothAdapter?.getProfileProxy(context, profileListener, BluetoothProfile.HEADSET)\n\n// ... call functions on bluetoothHeadset\n\n// Close proxy connection after use.\nbluetoothAdapter?.closeProfileProxy(BluetoothProfile.HEADSET, bluetoothHeadset)\n```\n\n### Java\n\n```java\nBluetoothHeadset bluetoothHeadset;\n\n// Get the default adapter\nBluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();\n\nprivate BluetoothProfile.ServiceListener profileListener = new BluetoothProfile.ServiceListener() {\n public void onServiceConnected(int profile, BluetoothProfile proxy) {\n if (profile == BluetoothProfile.HEADSET) {\n bluetoothHeadset = (BluetoothHeadset) proxy;\n }\n }\n public void onServiceDisconnected(int profile) {\n if (profile == BluetoothProfile.HEADSET) {\n bluetoothHeadset = null;\n }\n }\n};\n\n// Establish connection to the proxy.\nbluetoothAdapter.getProfileProxy(context, profileListener, BluetoothProfile.HEADSET);\n\n// ... call functions on bluetoothHeadset\n\n// Close proxy connection after use.\nbluetoothAdapter.closeProfileProxy(bluetoothHeadset);\n```\n\n### Vendor-specific AT commands\n\nApps can register to receive system broadcasts of predefined vendor-specific AT\ncommands sent by headsets (such as a Plantronics +XEVENT command). For example,\nan app could receive broadcasts that indicate a connected device's battery level\nand could notify the user or take other action as needed. Create a broadcast\nreceiver for the\n[`ACTION_VENDOR_SPECIFIC_HEADSET_EVENT`](/reference/android/bluetooth/BluetoothHeadset#ACTION_VENDOR_SPECIFIC_HEADSET_EVENT)\nintent to handle vendor-specific AT commands for the headset.\n\nHealth Device Profile\n---------------------\n\nAndroid supports the Bluetooth Health Device Profile (HDP). The Bluetooth Health\nAPI includes the classes\n[`BluetoothHealth`](/reference/android/bluetooth/BluetoothHealth),\n[`BluetoothHealthCallback`](/reference/android/bluetooth/BluetoothHealthCallback),\nand\n[`BluetoothHealthAppConfiguration`](/reference/android/bluetooth/BluetoothHealthAppConfiguration),\nwhich are described in [Key classes and\ninterfaces](/develop/connectivity/bluetooth#key-classes).\n| **Caution:** The Health Device Profile (HDP) and MCAP protocols are no longer used. New apps should use Bluetooth Low Energy based solutions such as [`BluetoothGatt`](/reference/android/bluetooth/BluetoothGatt), [`BluetoothAdapter.listenUsingL2capChannel()`](/reference/android/bluetooth/BluetoothAdapter#listenUsingL2capChannel()), or [`BluetoothDevice#createL2capChannel(int)`](/reference/android/bluetooth/BluetoothDevice#createL2capChannel(int)).\n\nWhen using the Bluetooth Health API, it's helpful to understand these key HDP\nconcepts:\n\nSource\n: A health device, such as a weight scale, glucose meter, or thermometer, which\n transmits medical data to a smart device, such as an Android phone or tablet.\n\nSink\n: The smart device that receives the medical data. In an HDP app, the\n sink is represented by a `BluetoothHealthAppConfiguration` object.\n\nRegistration\n: The process used to register a sink for communicating with a particular health\n device.\n\nConnection\n: The process used to open a channel between a health device (source) and a\n smart device (sink).\n\n### Create an HDP app\n\nHere are the basic steps involved in creating an HDP app:\n\n1. Get a reference to the `BluetoothHealth` proxy object. As with regular\n headset and A2DP profile devices, you must call `getProfileProxy()` with a\n `BluetoothProfile.ServiceListener` and the\n [`HEALTH`](/reference/android/bluetooth/BluetoothProfile#HEALTH) profile type\n to establish a connection with the profile proxy object.\n\n2. Create a `BluetoothHealthCallback` and register an app configuration\n (`BluetoothHealthAppConfiguration`) that acts as a health sink.\n\n3. Establish a connection to a health device.\n\n | **Note:** Some devices initiate the connection automatically. It is unnecessary to carry out this step for those devices.\n4. When connected successfully to a health device, read and write to the health\n device using the file descriptor. The received data needs to be interpreted\n using a health manager, which implements the [IEEE 11073\n specifications](https://standards.ieee.org/standard/11073-10207-2017.html).\n\n5. When done, close the health channel and unregister the app. The channel also\n closes when there is extended inactivity."]]