ملفات البلوتوث الشخصية

تتضمن واجهة برمجة تطبيقات Bluetooth دعمًا للعمل مع الملفات الشخصية للبلوتوث. الملف الشخصي عبر البلوتوث هو مواصفات واجهة لاسلكية للاتصال عبر البلوتوث بين الأجهزة، مثل الملف الشخصي لتطبيق Hands Free. لتوصيل جهاز جوّال بسماعة رأس لاسلكية، يجب أن يتوافق كلا الجهازين مع ملف تعريف "سماعة الرأس".

توفر واجهة برمجة تطبيقات Bluetooth عمليات تنفيذ للملفات الشخصية التالية للبلوتوث:

  • سماعة رأس: يوفر الملف الشخصي لسماعة الرأس دعمًا لسماعات رأس البلوتوث المراد استخدامها مع الهواتف المحمولة. يوفر Android الفئة BluetoothHeadset، وهي وكيل للتحكم في خدمة سماعة الرأس التي تعمل بالبلوتوث. ويتضمن ذلك الملفات الشخصية لسماعة الرأس التي تعمل بالبلوتوث والملفات الشخصية بدون استخدام اليدين (الإصدار 1.5). تتيح الفئة BluetoothHeadset استخدام أوامر التكنولوجيا الآلية. لمزيد من المعلومات حول هذا الموضوع، يُرجى الاطّلاع على أوامر التقنية المساعدة الخاصة بالمورّدين.
  • A2DP: يحدِّد الملف الشخصي المتقدِّم لتوزيع الصوت المتقدِّم (A2DP) كيفية بث الصوت العالي الجودة من جهاز إلى آخر عبر اتصال بلوتوث. يوفّر Android الفئة BluetoothA2dp، وهي خادم وكيل للتحكّم في خدمة Bluetooth A2DP.
  • Health Device. يوفر Android دعمًا للملف الشخصي لجهاز Bluetooth Health (HDP). يتيح لك ذلك إنشاء تطبيقات تستخدم البلوتوث للتواصل مع الأجهزة الصحية المتوافقة مع البلوتوث، مثل أجهزة مراقبة معدل ضربات القلب، وأجهزة قياس الدم، وميزان الحرارة، والمقاييس، وما إلى ذلك. للحصول على قائمة بالأجهزة المتوافقة ورموز تخصّص بيانات الجهاز المقابلة لها، يمكنك مراجعة تخصّصات بيانات الجهاز HDP التي توفّرها تقنية البلوتوث. تتم الإشارة إلى هذه القيم أيضًا في مواصفات ISO/IEEE 11073-20601 [7] على النحو التالي: MDC_DEV_SPEC_PROFILE_* في ملحق رموز التسمية. لمزيد من المعلومات حول تقنية HDP، يمكنك الاطّلاع على ملف Health Device Profile.

فيما يلي الخطوات الأساسية للتعامل مع الملف الشخصي:

  1. احصل على المحوّل التلقائي، كما هو موضّح في إعداد البلوتوث.
  2. إعداد BluetoothProfile.ServiceListener ويُبلِغ هذا المستمع عملاء BluetoothProfile عند اتصالهم بالخدمة أو إلغاء ربطها بها.
  3. استخدِم getProfileProxy() لإنشاء اتصال بكائن الخادم الوكيل للملف الشخصي المرتبط بالملف الشخصي. في المثال التالي، يعتبر كائن الخادم الوكيل للملف الشخصي مثيلاً لـ BluetoothHeadset.
  4. في onServiceConnected()، يمكنك الحصول على اسم معرِّف لكائن الخادم الوكيل للملف الشخصي.
  5. عند الحصول على كائن الخادم الوكيل للملف الشخصي، يمكنك استخدامه لمراقبة حالة الاتصال وتنفيذ عمليات أخرى ذات صلة بهذا الملف الشخصي.

يوضّح مقتطف الرمز التالي طريقة الاتصال بكائن خادم وكيل BluetoothHeadset لتتمكّن من التحكّم في الملف الشخصي لسماعة الرأس:

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

أوامر التقنية المساعدة (AT) الخاصة بالمورّد

يمكن للتطبيقات التسجيل لتلقّي عمليات بث النظام لأوامر AT المحددة مسبقًا الخاصة بالمورّدين والتي يتم إرسالها من خلال سماعات الرأس (مثل أمر Plantronics +XEVENT). على سبيل المثال، يمكن لتطبيق ما استقبال عمليات البث التي تشير إلى مستوى بطارية الجهاز المتصل وبإمكانه إرسال إشعار إلى المستخدم أو اتخاذ إجراء آخر حسب الحاجة. يمكنك إنشاء جهاز استقبال بث لهدف ACTION_VENDOR_SPECIFIC_HEADSET_EVENT للتعامل مع أوامر التقنية المساعدة (AT) الخاصة بالمورّدين لسماعة الرأس.

الملف الشخصي لجهاز Health

يتوافق Android مع الملف الشخصي لجهاز Bluetooth Health (HDP). تشمل واجهة برمجة التطبيقات Bluetooth Health API الفئات BluetoothHealth وBluetoothHealthCallback وBluetoothHealthAppConfiguration الموضّحة في الفئات والواجهات الرئيسية.

عند استخدام Bluetooth Health API، من المفيد التعرّف على مفاهيم HDP الرئيسية التالية:

المصدر
جهاز صحي، مثل مقياس الوزن أو مقياس الغلوكوز أو ميزان الحرارة الذي ينقل البيانات الطبية إلى جهاز ذكي، مثل هاتف Android أو جهاز Android لوحي
مغسلة
الجهاز الذكي الذي يتلقّى البيانات الطبية في تطبيق HDP، يتم تمثيل الحوض بكائن BluetoothHealthAppConfiguration.
تسجيل
العملية المستخدمة لتسجيل حوض استحمام للاتصال بجهاز صحي معين.
التواصل
العملية المستخدمة لفتح قناة بين جهاز صحي (المصدر) وجهاز ذكي (حوض)

إنشاء تطبيق HDP

فيما يلي الخطوات الأساسية لإنشاء تطبيق HDP:

  1. احصل على مرجع لكائن الخادم الوكيل BluetoothHealth. كما هي الحال مع سماعة الرأس العادية وأجهزة الملف الشخصي A2DP، يجب طلب getProfileProxy() باستخدام نوع الملف الشخصي BluetoothProfile.ServiceListener ونوع الملف الشخصي على HEALTH لإنشاء اتصال بكائن الخادم الوكيل للملف الشخصي.

  2. أنشِئ BluetoothHealthCallback وسجِّل إعدادات التطبيق (BluetoothHealthAppConfiguration) التي تعمل كوحدة صحية.

  3. الربط بجهاز صحي.

  4. عند التوصيل بنجاح بجهاز صحي، يمكنك قراءة بيانات الجهاز الصحّي والكتابة فيه باستخدام واصف الملفات. يجب تفسير البيانات التي تم استلامها باستخدام مدير للصحة الذي ينفِّذ مواصفات IEEE 11073.

  5. عند إغلاق القناة، أغلِق القناة المرتبطة بالصحة وألغِ تسجيل التطبيق. وتُغلق القناة أيضًا عند توقف النشاط لمدة طويلة.