بلوتوث کم‌مصرف

Android پشتیبانی پلاتفرم داخلی برای «بلوتوث کم‌مصرف» (BLE) در نقش مرکزی ارائه می‌دهد و میاناهای برنامه‌سازی کاربردی‌ای ارائه می‌دهد که برنامه‌ها می‌توانند از آن‌ها برای کاوش دستگاه‌ها، درخواست سرویس‌ها، و انتقال اطلاعات استفاده کنند.

موارد استفاده رایج شامل موارد زیر است:

  • انتقال حجم کمی از داده‌ها بین دستگاه‌های اطراف.
  • تعامل با حسگرهای مجاورت برای ارائه تجربه سفارشی‌شده به کاربران براساس مکان فعلی آن‌ها.

برخلاف بلوتوث کلاسیک، BLE برای مصرف انرژی بسیار کمتر طراحی شده است. این ویژگی به برنامه‌ها امکان می‌دهد با دستگاه‌های BLE که الزامات مصرف انرژی سخت‌گیرانه‌تری دارند، مانند حسگرهای مجاورت، پایشگرهای ضربان قلب، و دستگاه‌های تناسب اندام، ارتباط برقرار کنند.

احتیاط: وقتی کاربری دستگاهش را با دستگاه دیگری بااستفاده از BLE جفت می‌کند، داده‌هایی که بین دو دستگاه ردوبدل می‌شود برای همه برنامه‌های موجود در دستگاه کاربر قابل‌دسترسی است.

به همین دلیل، اگر برنامه‌تان داده‌های حساس را ضبط می‌کند، باید امنیت لایه برنامه را برای محافظت از حریم خصوصی آن داده‌ها پیاده‌سازی کنید.

اصول اولیه

برای اینکه دستگاه‌های سازگار با «بلوتوث کم‌مصرف» بتوانند بین یکدیگر داده منتقل کنند، ابتدا باید کانال ارتباطی تشکیل دهند. برای استفاده از میاناهای برنامه‌سازی کاربردی بلوتوث کم‌مصرف، باید چندین اجازه را در فایل مانیفست خود اعلام کنید. وقتی برنامه‌تان اجازه استفاده از بلوتوث را داشته باشد، باید به BluetoothAdapter دسترسی داشته باشد و تعیین کند که آیا بلوتوث در دستگاه دردسترس است یا نه اگر بلوتوث دردسترس باشد، دستگاه دستگاه‌های BLE اطراف را اسکن می‌کند. وقتی دستگاهی پیدا شد، قابلیت‌های دستگاه BLE با اتصال به سرور GATT در دستگاه BLE کشف می‌شود. پس‌از برقراری اتصال، داده‌ها را می‌توان با دستگاه متصل‌شده منتقل کرد که این امر براساس سرویس‌ها و ویژگی‌های دردسترس انجام می‌شود.

اصطلاحات و مفاهیم کلیدی

در زیر خلاصه‌ای از اصطلاحات و مفاهیم کلیدی BLE آورده شده است:

  • نمایه مشخصه عمومی (GATT)
    نمایه GATT مشخصات کلی برای ارسال و دریافت قطعات کوتاه داده است که به‌عنوان «ویژگی‌ها» در پیوند BLE شناخته می‌شود. همه نمایه‌های برنامه BLE فعلی براساس GATT هستند. برای کسب اطلاعات بیشتر، نمونه Android BluetoothLeGatt را در GitHub مرور کنید.
  • نمایه‌ها
    Bluetooth SIG نمایه‌های زیادی را برای دستگاه‌های BLE تعریف می‌کند. نمایه مشخصه‌ای است برای نحوه عملکرد دستگاه در یک برنامه خاص. توجه داشته باشید که دستگاه می‌تواند بیش‌از یک نمایه را پیاده‌سازی کند. برای مثال، دستگاه می‌تواند حاوی نمایشگر ضربان قلب و شناساگر سطح باتری باشد.
  • پروتکل مشخصه (ATT)
    GATT براساس «پروتکل مشخصه» (ATT) ساخته شده است. به این پروتکل GATT/ATT نیز گفته می‌شود. ATT برای اجرا در دستگاه‌های BLE بهینه‌سازی شده است. برای این منظور، از کمترین بایت ممکن استفاده می‌کند. هر مشخصه به‌طور منحصربه‌فردی با «شناسه منحصربه‌فرد جهانی» (UUID) شناسایی می‌شود که یک قالب استاندارد ۱۲۸ بیتی برای شناسه رشته‌ای است که برای شناسایی منحصربه‌فرد اطلاعات استفاده می‌شود. مشخصه‌های منتقل‌شده توسط ATT به‌صورت ویژگی‌ها و سرویس‌ها قالب‌بندی می‌شوند.
  • مشخصه
    ویژگی حاوی یک مقدار واحد و ۰ تا n توصیف‌گر است که مقدار ویژگی را توصیف می‌کنند. مشخصه را می‌توان به‌عنوان یک نوع درنظر گرفت، مشابه کلاس.
  • توصیف‌گر
    توصیف‌کننده‌ها مشخصه‌های تعریف‌شده‌ای هستند که مقدار مشخصه را توصیف می‌کنند. برای مثال، توصیف‌گر ممکن است شرحی قابل‌خواندن برای انسان، گستره‌ای قابل‌قبول برای مقدار مشخصه، یا واحد اندازه‌گیری خاصی برای مقدار مشخصه را مشخص کند.
  • سرویس
    سرویس مجموعه‌ای از ویژگی‌ها است. برای مثال، می‌توانید سرویسی به‌نام «نمایشگر ضربان قلب» داشته باشید که شامل مشخصه‌هایی مثل «اندازه‌گیری ضربان قلب» باشد. می‌توانید فهرستی از نمایه‌ها و سرویس‌های مبتنی بر GATT را در bluetooth.org پیدا کنید.

نقش‌ها و مسئولیت‌ها

وقتی دستگاهی با دستگاه BLE تعامل می‌کند، نقش‌ها و مسئولیت‌ها به دو روش مختلف تقسیم می‌شوند:

  • مرکزی درمقابل محیطی. این امر برای خود اتصال BLE اعمال می‌شود—دستگاه در نقش مرکزی اسکن می‌کند و به‌دنبال تبلیغات می‌گردد، و دستگاه در نقش جانبی تبلیغ می‌کند. دو دستگاهی که فقط از نقش جانبی پشتیبانی می‌کنند نمی‌توانند با یکدیگر ارتباط برقرار کنند، و دو دستگاهی که فقط از نقش مرکزی پشتیبانی می‌کنند نیز نمی‌توانند با یکدیگر ارتباط برقرار کنند.

  • سرور GATT درمقابل کارخواه GATT. این پروتکل تعیین می‌کند که دو دستگاه پس‌از برقراری اتصال چگونه با یکدیگر ارتباط برقرار کنند. دستگاهی که در نقش کارخواه است درخواست‌های داده را ارسال می‌کند و دستگاهی که در نقش سرور است آن‌ها را برآورده می‌کند.

برای درک تفاوت بین تقسیم نقش‌های مرکزی-محیطی و سرور-کارخواه، مثالی را درنظر بگیرید که در آن یک تلفن Android و یک ردیاب فعالیت با قابلیت BLE دارید که داده‌های حسگر را به تلفن گزارش می‌دهد.

  • تلفن (دستگاه مرکزی) به‌طور فعال دستگاه‌های BLE را اسکن می‌کند. فعالیت ردیاب—دستگاه جانبی—تبلیغ می‌کند و منتظر دریافت درخواست اتصال می‌ماند.

  • پس‌از اینکه تلفن و ردیاب فعالیت اتصال برقرار کردند، شروع به انتقال فراداده GATT به یکدیگر می‌کنند. در این مورد، برنامه‌ای که در تلفن اجرا می‌شود درخواست‌های داده را ارسال می‌کند، بنابراین به‌عنوان کارخواه GATT عمل می‌کند. فعالیت‌سنج این درخواست‌ها را برآورده می‌کند، بنابراین به‌عنوان سرور GATT عمل می‌کند.

طراحی جایگزین برنامه ممکن است شامل ایفای نقش سرور GATT توسط تلفن باشد. برای اطلاعات بیشتر، BluetoothGattServer را ببینید.