קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
Bluetooth API כולל תמיכה בעבודה עם פרופילים של Bluetooth. א'
פרופיל Bluetooth הוא מפרט של ממשק אלחוטי מבוסס-Bluetooth
תקשורת בין מכשירים, למשל פרופיל 'דיבורית'. בנייד
כדי להתחבר לאוזניות אלחוטיות, שני המכשירים חייבים לתמוך
פרופיל בהפעלה קולית.
Bluetooth API מספק הטמעות לפונקציות Bluetooth הבאות
פרופילים:
אוזניות. פרופיל האוזניות מספק תמיכה באוזניות Bluetooth
בשימוש בטלפונים ניידים. Android מספק
BluetoothHeadset כיתה,
שהוא שרת proxy לשליטה על שירות אוזניות Bluetooth. המידע הזה כולל
פרופיל Bluetooth עם אוזניות Bluetooth ומערכת דיבורית (גרסה 1.5). BluetoothHeadset
class כולל תמיכה בפקודות AT. למידע נוסף על הנושא הזה, אפשר לעיין בקישור הבא:
פקודות AT ספציפיות לספקים.
A2DP. הפרופיל המתקדם של הפצת אודיו (A2DP) מגדיר את האופן שבו
ניתן לשדר אודיו באיכות גבוהה ממכשיר אחד לאחר באמצעות Bluetooth
חיבור כזה. Android מספק
BluetoothA2dp, כלומר
שרת proxy לשליטה על שירות Bluetooth A2DP.
מכשיר בריאות. מערכת Android מספקת תמיכה ב-Bluetooth Health Device
פרופיל (HDP). ההרשאה הזו מאפשרת ליצור אפליקציות שמשתמשות ב-Bluetooth כדי לתקשר
עם מכשירי בריאות שתומכים ב-Bluetooth, כמו מוניטורים של דופק, דם
מטרים, מדי חום, סולמות וכו'. לרשימה של מכשירים נתמכים
ניתן לקרוא על קודי ההתמחות של מכשירים תואמים ב-HDP של Bluetooth
נתוני המכשיר
תחומי התמחות.
הערכים האלה מוזכרים במפרט ISO/IEEE 11073-20601 [7]
כמו MDC_DEV_SPEC_PROFILE_* בנספח קודי המינויים. לקבלת מידע נוסף
מידע על HDP זמין בפרופיל של מכשיר הבריאות.
כדאי להשתמש
getProfileProxy()
כדי ליצור חיבור לאובייקט ה-Proxy של הפרופיל המשויך
פרופיל. בדוגמה הבאה, אובייקט ה-Proxy של הפרופיל הוא מופע של
BluetoothHeadset
אחרי שמקבלים את אובייקט ה-Proxy של הפרופיל, משתמשים בו כדי לעקוב אחרי המצב של
ולבצע פעולות אחרות שרלוונטיות לאותו פרופיל.
קטע הקוד הבא מראה איך להתחבר לשרת proxy של BluetoothHeadset
כדי שתוכלו לשלוט בפרופיל של אוזניות הכפתור:
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);
פקודות AT ספציפיות לספקים
אפליקציות יכולות להירשם לקבלת שידורים של מערכת עם הרשאות AT ספציפיות לספק מוגדר מראש
פקודות שנשלחות על ידי אוזניות (למשל פקודת Plantronics +XEVENT). לדוגמה,
אפליקציה יכולה לקבל שידורים שמציינים את רמת הטעינה של הסוללה של מכשיר מחובר
והם יכולים להודיע למשתמש או לבצע פעולה אחרת לפי הצורך. יצירת שידור
המקבל של
ACTION_VENDOR_SPECIFIC_HEADSET_EVENT
Intent לטפל בפקודות AT ספציפיות לספק עבור האוזניות.
כשמשתמשים ב-Bluetooth Health API, כדאי להבין את הגורמים הבאים:
של המושגים:
מקור
מכשיר בריאותי כמו סולם משקל, מד סוכר או מדחום,
מעביר נתונים רפואיים למכשיר חכם, כמו טלפון או טאבלט עם Android.
כיור
המכשיר החכם שמקבל את הנתונים הרפואיים. באפליקציית HDP,
sink מיוצג על ידי אובייקט BluetoothHealthAppConfiguration.
הרשמה
התהליך המשמש לרישום sink לתקשורת עם בריאות מסוימת
במכשיר.
חיבור
התהליך המשמש לפתיחת ערוץ בין מכשיר בריאות (מקור) לבין
מכשיר חכם (sink).
יצירה של אפליקציית HDP
אלו השלבים הבסיסיים ליצירת אפליקציית HDP:
מקבלים הפניה לאובייקט ה-Proxy BluetoothHealth. כמו בסרטונים רגילים
אוזניות ומכשירי פרופיל A2DP, עליך להתקשר אל getProfileProxy() באמצעות
BluetoothProfile.ServiceListener וגם
סוג הפרופיל HEALTH
כדי ליצור חיבור עם אובייקט ה-Proxy של הפרופיל.
יצירת BluetoothHealthCallback ורישום הגדרת אפליקציה
(BluetoothHealthAppConfiguration) שמשמש כיור בריאות.
יצירת חיבור למכשיר בריאות.
אחרי החיבור בהצלחה למכשיר בריאות, צריך לקרוא ולכתוב ב-Health
באמצעות מתאר הקובץ. צריך לפרש את הנתונים שהתקבלו
באמצעות מנהל תקינות, שמטמיע את תקן IEEE 11073
מפרטים.
בסיום, צריך לסגור את ערוץ הבריאות ולבטל את הרישום של האפליקציה. הערוץ גם
נסגר כשיש חוסר פעילות למשך זמן ארוך.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון UTC).
[null,null,["עדכון אחרון: 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."]]