تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تشمل واجهة برمجة تطبيقات البلوتوث إمكانية العمل مع الملفات الشخصية للبلوتوث. حاسمة
ملف تعريف البلوتوث هو من مواصفات الواجهة اللاسلكية المستندة إلى البلوتوث
الاتصال بين الأجهزة، مثل ملف تعريف وضع "بدون استخدام اليدين". بالنسبة إلى الأجهزة الجوّالة
جهاز للاتصال بسماعة رأس لاسلكية، يجب أن يدعم كلا الجهازين
ملف شخصي بدون لمس الجهاز
توفر واجهة برمجة تطبيقات البلوتوث عمليات تنفيذ لأنواع البلوتوث التالية
الملفات الشخصية:
سماعة رأس: يوفر الملف الشخصي لسماعة الرأس الدعم لسمّاعات الرأس التي تعمل بالبلوتوث
المستخدم مع الهواتف المحمولة. ويوفّر Android
صف واحد (BluetoothHeadset)
وهو خادم وكيل للتحكم في خدمة سماعة رأس بلوتوث. وتشمل هذه المعلومات ما يلي:
الملف الشخصي لسماعة رأس بلوتوث أو وضع "بدون استخدام اليدين" (الإصدار 1.5). BluetoothHeadset
تتضمن الفئة دعمًا لأوامر AT. لمزيد من المعلومات حول هذا الموضوع، يُرجى الاطّلاع على
أوامر التقنية المساعدة الخاصة بالمورّد:
A2DP: يحدد الملف الشخصي المتقدم لتوزيع الصوت (A2DP) كيفية
يمكن بث صوت عالي الجودة من جهاز إلى آخر عبر البلوتوث
الاتصال. ويوفّر Android
BluetoothA2dp، وهي
خادم وكيل للتحكم في خدمة Bluetooth A2DP.
جهاز الصحة: يوفِّر Android الدعم لجهاز Bluetooth Health
الملف الشخصي (HDP). يتيح لك ذلك إنشاء التطبيقات التي تستخدم البلوتوث للتواصل
مع الأجهزة الصحية التي تدعم البلوتوث، مثل أجهزة مراقبة معدل ضربات القلب وأصوات الدم
مترات وموازين حرارة وموازين وما إلى ذلك للاطّلاع على قائمة بالأجهزة المتوافقة
رموز تخصصات بيانات الجهاز المقابلة، يمكنك مراجعة بروتوكول HDP في البلوتوث
بيانات الجهاز
التخصصات:
تتم الإشارة إلى هذه القيم أيضًا في مواصفات ISO/IEEE 11073-20601 [7].
كـ MDC_DEV_SPEC_PROFILE_* في ملحق رموز التسمية. لمزيد من المعلومات،
معلومات حول بروتوكول HDP، يُرجى الاطّلاع على الملف الشخصي لجهاز Health.
فيما يلي الخطوات الأساسية للعمل على ملف شخصي:
احصل على المحوّل التلقائي، كما هو موضّح في
إعداد البلوتوث:
وبمجرد أن يكون لديك كائن الخادم الوكيل للملف الشخصي، استخدمه لمراقبة حالة
وإجراء عمليات أخرى ذات صلة بهذا الملف الشخصي.
يعرض مقتطف الرمز التالي طريقة الاتصال بخادم وكيل 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) الخاصة بالمورّدين
يمكن للتطبيقات التسجيل لتلقّي عمليات بث النظام من التقنية المساعدة التقنية المحددة مسبقًا الخاصة بالمورّدين
الأوامر المرسلة من خلال سماعات الرأس (مثل أمر Plantronics +XEVENT). على سبيل المثال:
يمكن لتطبيق معيّن تلقّي رسائل بث تشير إلى مستوى بطارية الجهاز المتصل.
ويمكنها إعلام المستخدم أو اتخاذ أي إجراء آخر حسب الحاجة. إنشاء بث
مستلم
ACTION_VENDOR_SPECIFIC_HEADSET_EVENT
نية التعامل مع أوامر AT الخاصة بالبائعين لسماعة الرأس.
عند استخدام Bluetooth Health API، من المفيد التعرّف على هذه البروتوكولات الأساسية
المفاهيم:
المصدر
جهاز صحي، مثل ميزان الوزن أو مقياس الغلوكوز أو ميزان الحرارة، الذي
تنقل البيانات الطبية إلى جهاز ذكي، مثل هاتف Android أو جهاز Android اللوحي.
مغسلة
الجهاز الذكي الذي يتلقّى البيانات الطبية في تطبيق HDP،
يُمثل الحوض بالكائن BluetoothHealthAppConfiguration.
التسجيل
العملية المستخدمة لتسجيل حوض للتواصل بصحة معينة
جهازك.
الاتصال
عملية فتح قناة بين جهاز سليم (المصدر) و
جهاز ذكي (حوض).
إنشاء تطبيق HDP
إليك الخطوات الأساسية لإنشاء تطبيق HDP:
الحصول على إشارة إلى عنصر الخادم الوكيل BluetoothHealth كما هو الحال مع العادي
سماعة الرأس وأجهزة الملف الشخصي A2DP، يجب الاتصال بـ getProfileProxy() باستخدام
BluetoothProfile.ServiceListener و
نوع الملف الشخصي في HEALTH
لإنشاء اتصال بكائن الخادم الوكيل للملف الشخصي.
إنشاء BluetoothHealthCallback وتسجيل إعدادات التطبيق
(BluetoothHealthAppConfiguration) الذي يعمل كبالوعات الصحية.
الاتصال بجهاز صحي
عند الاتصال بجهاز صحي بنجاح، عليك قراءة بيانات السلامة والكتابة إليها.
الجهاز باستخدام واصف الملف. يجب تفسير البيانات المستلمة
باستخدام مدير صحة، وهو تنفيذ IEEE 11073
المواصفات.
عند الانتهاء، أغلِق قناة الصحة وألغِ تسجيل التطبيق. تقدّم القناة أيضًا
ويتم إغلاقه عندما يكون هناك عدم نشاط ممتد.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],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."]]