میانای برنامهسازی کاربردی بلوتوث شامل پشتیبانی از کار با نمایههای بلوتوث است. نمایه بلوتوث مشخصات میانای بیسیم برای ارتباط مبتنی بر بلوتوث بین دستگاهها است، مثل نمایه «دستآزاد». برای اینکه دستگاه همراه به هدست بیسیم متصل شود، هر دو دستگاه باید از نمایه «دستآزاد» پشتیبانی کنند.
Bluetooth API پیادهسازیهایی را برای نمایههای Bluetooth زیر ارائه میدهد:
- هدست. نمایه «هدست» پشتیبانی از هدستهای بلوتوث را برای استفاده با تلفنهای همراه فراهم میکند. Android کلاس
BluetoothHeadsetرا ارائه میدهد که پراکسیای برای کنترل «سرویس هدست بلوتوث» است. این شامل نمایههای «هدست بلوتوث» و «دستآزاد» (نسخه ۱.۵) میشود. کلاسBluetoothHeadsetشامل پشتیبانی از فرمانهای AT است. برای اطلاعات بیشتر درباره این موضوع، به فرمانهای AT مختص فروشنده مراجعه کنید. - A2DP. نمایه «نمایه توزیع پیشرفته صدا» (A2DP) نحوه جاریسازی صدای باکیفیت از یک دستگاه به دستگاه دیگر را ازطریق اتصال بلوتوث تعریف میکند. Android کلاس
BluetoothA2dpرا ارائه میدهد که پروکسیای برای کنترل «سرویس A2DP بلوتوث» است. - دستگاه سلامتی. Android از «نمایه دستگاه سلامت بلوتوث» (HDP) پشتیبانی میکند. این به شما امکان میدهد برنامههایی ایجاد کنید که از بلوتوث برای برقراری ارتباط با دستگاههای سلامتی که از بلوتوث پشتیبانی میکنند، مانند مانیتورهای ضربان قلب، فشارسنجها، دماسنجها، ترازوها و غیره استفاده میکنند. برای مشاهده فهرست دستگاههای پشتیبانیشده و
کدهای تخصصی دادههای دستگاه مربوط به آنها، به تخصصهای دادههای دستگاه
HDP
بلوتوث مراجعه کنید.
این مقادیر در مشخصات ISO/IEEE 11073-20601 [7] نیز بهعنوان
MDC_DEV_SPEC_PROFILE_*در پیوست کدهای نامگذاری ارجاع داده شدهاند. برای اطلاعات بیشتر درباره HDP، به نمایه دستگاه سلامت مراجعه کنید.
مراحل اصلی کار با نمایه در اینجا آمده است:
- آداپتور پیشفرض را دریافت کنید، همانطور که در راهاندازی بلوتوث توضیح داده شده است.
BluetoothProfile.ServiceListenerراهاندازی کنید. این شنونده بهBluetoothProfileمشتری اطلاع میدهد که چه زمانی به سرویس متصل یا از آن قطع شدهاند.- از
getProfileProxy()برای برقراری اتصال به شیء پراکسی نمایه مرتبط با نمایه استفاده کنید. در مثال زیر، شیء پراکسی نمایه نمونهای ازBluetoothHeadsetاست. - در
onServiceConnected()، یک دسته برای شیء پراکسی نمایه دریافت کنید. - وقتی شیء پراکسی نمایه را دریافت کردید، از آن برای نظارت بر وضعیت اتصال و انجام عملیات دیگری که به آن نمایه مربوط است استفاده کنید.
تکهکد زیر نحوه اتصال به شیء پراکسی BluetoothHeadset را نشان میدهد تا بتوانید نمایه «هدست» را کنترل کنید:
کاتلین
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)
جاوا
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 مختص فروشنده را برای هدست مدیریت کند.
نمایه دستگاه سلامتی
Android از «نمایه دستگاه سلامت بلوتوث» (HDP) پشتیبانی میکند. The Bluetooth Health
API includes the classes
BluetoothHealth,
BluetoothHealthCallback,
and
BluetoothHealthAppConfiguration,
which are described in Key classes and
interfaces.
هنگام استفاده از Bluetooth Health API، درک این مفاهیم کلیدی HDP مفید است:
- منبع
- دستگاه سلامتی، مانند ترازوی وزن، گلوکومتر، یا دماسنج، که دادههای پزشکی را به دستگاه هوشمندی مانند تلفن یا رایانه لوحی Android منتقل میکند.
- روشویی
- دستگاه هوشمندی که دادههای پزشکی را دریافت میکند. در برنامه HDP،
سینک با شیء
BluetoothHealthAppConfigurationنشان داده میشود. - ثبتنام
- فرایند مورداستفاده برای ثبت سینک برای برقراری ارتباط با دستگاه سلامتی خاص.
- اتصال
- فرایندی که برای باز کردن کانال بین دستگاه سلامتی (منبع) و دستگاه هوشمند (مقصد) استفاده میشود.
ایجاد برنامه HDP
مراحل اصلی ایجاد برنامه HDP در اینجا آمده است:
ارجاعی به شیء پراکسی
BluetoothHealthدریافت کنید. همانند دستگاههای نمایه A2DP و هدست معمولی، بایدgetProfileProxy()را باBluetoothProfile.ServiceListenerو نوع نمایهHEALTHفراخوانی کنید تا اتصالی با شیء پراکسی نمایه برقرار شود.BluetoothHealthCallbackایجاد کنید و پیکربندی برنامهای را ثبت کنید (BluetoothHealthAppConfiguration) که بهعنوان سینک سلامت عمل میکند.برقراری اتصال با دستگاه سلامت.
وقتی اتصال به دستگاه سلامت با موفقیت برقرار شد، بااستفاده از توصیفگر فایل، در دستگاه سلامت بخوانید و بنویسید. دادههای دریافتی باید بااستفاده از مدیر سلامت که مشخصات IEEE 11073 را پیادهسازی میکند تفسیر شود.
وقتی کارتان تمام شد، کانال سلامت را ببندید و ثبتنام برنامه را لغو کنید. همچنین، اگر برای مدتی طولانی فعالیتی انجام نشود، کانال بسته میشود.