نمای کلی بلوتوث

پلاتفرم Android از پشته شبکه بلوتوث پشتیبانی می‌کند که به دستگاه اجازه می‌دهد به‌صورت بی‌سیم با دیگر دستگاه‌های بلوتوث تبادل داده کند. چارچوب برنامه ازطریق میاناهای برنامه‌سازی کاربردی بلوتوث، دسترسی به عملکرد بلوتوث را فراهم می‌کند. این میاناهای برنامه‌سازی کاربردی به برنامه‌ها اجازه می‌دهند به دیگر دستگاه‌های بلوتوث متصل شوند و ویژگی‌های بی‌سیم نقطه‌به‌نقطه و چندنقطه‌ای را فعال کنند.

بااستفاده از میاناهای برنامه‌سازی کاربردی بلوتوث، برنامه می‌تواند کارهای زیر را انجام دهد:

  • دستگاه‌های بلوتوث دیگر را اسکن کنید.
  • از آداپتور بلوتوث محلی برای دستگاه‌های بلوتوث جفت‌شده درخواست کنید.
  • کانال‌های RFCOMM را ایجاد کنید.
  • ازطریق کشف سرویس به دستگاه‌های دیگر متصل شوید.
  • انتقال داده به دستگاه‌های دیگر و از آن‌ها.
  • مدیریت کردن چند اتصال.

این موضوع بر بلوتوث کلاسیک تمرکز دارد. «بلوتوث کلاسیک» انتخاب مناسبی برای عملیات‌هایی است که مصرف باتری بیشتری دارند، ازجمله جاری‌سازی و برقراری ارتباط بین دستگاه‌ها. برای دستگاه‌های بلوتوث با نیازهای کم‌مصرف، استفاده از اتصالات بلوتوث کم‌مصرف را درنظر بگیرید.

این سند نمایه‌های مختلف بلوتوث را شرح می‌دهد و توضیح می‌دهد که چگونه از Bluetooth API برای انجام چهار وظیفه اصلی لازم برای برقراری ارتباط بااستفاده از بلوتوث استفاده کنید:

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

برای مشاهده نمایشی از نحوه استفاده از میاناهای برنامه‌سازی کاربردی بلوتوث، به برنامه نمونه Bluetooth Chat مراجعه کنید.

اصول اولیه

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

استفاده از Bluetooth API مستلزم اعلام چندین اجازه در فایل مانیفست شما است. وقتی برنامه‌تان اجازه استفاده از بلوتوث را داشته باشد، باید به BluetoothAdapter دسترسی داشته باشد و تعیین کند که آیا بلوتوث در دستگاه دردسترس است یا نه. اگر بلوتوث دردسترس باشد، سه مرحله برای برقراری اتصال وجود دارد:

برخی‌از دستگاه‌ها از نمایه بلوتوث خاصی استفاده می‌کنند که داده‌هایی را که ارائه می‌دهد اعلام می‌کند.

کلاس‌ها و میاناهای کلیدی

همه میاناهای برنامه‌سازی کاربردی بلوتوث در بسته android.bluetooth دردسترس هستند. کلاس‌ها و میاناهای زیر برای ایجاد اتصال‌های بلوتوث لازم است:

BluetoothAdapter
نشان‌دهنده آداپتور بلوتوث محلی (رادیو بلوتوث) است. BluetoothAdapter نقطه ورود برای همه تعاملات بلوتوث است. بااستفاده از این، می‌توانید دستگاه‌های بلوتوث دیگر را کاوش کنید، فهرستی از دستگاه‌های متصل‌شده (جفت‌شده) را جستجو کنید، یک BluetoothDevice را بااستفاده از مک آدرس شناخته‌شده نمونه‌سازی کنید، و یک BluetoothServerSocket ایجاد کنید تا به ارتباطات از دستگاه‌های دیگر گوش دهید.
BluetoothDevice
نشان‌دهنده دستگاه بلوتوث راه دور است. از این برای درخواست اتصال با دستگاه ازراه‌دور ازطریق BluetoothSocket یا اطلاعات جست‌وجو درباره دستگاه مانند نام، نشانی، کلاس، و وضعیت پیوند استفاده کنید.
BluetoothSocket
نشان‌دهنده میانای سوکت بلوتوث (مشابه TCP Socket) است. این نقطه اتصال به برنامه اجازه می‌دهد بااستفاده از InputStream و OutputStream با دستگاه بلوتوث دیگری داده مبادله کند.
BluetoothServerSocket
نشان‌دهنده سوکت سرور باز است که به درخواست‌های ورودی گوش می‌دهد (مشابه TCP ServerSocket). برای اتصال دو دستگاه، یک دستگاه باید سوکت سرور را با این کلاس باز کند. وقتی دستگاه بلوتوث ازراه‌دور درخواست اتصال به این دستگاه را می‌دهد، دستگاه اتصال را می‌پذیرد و سپس BluetoothSocket متصل‌شده را برمی‌گرداند.
BluetoothClass
ویژگی‌ها و قابلیت‌های کلی دستگاه بلوتوث را شرح می‌دهد. این مجموعه‌ای از ویژگی‌های فقط خواندنی است که کلاس‌ها و سرویس‌های دستگاه را تعریف می‌کند. اگرچه این اطلاعات نکته مفیدی درباره نوع دستگاه ارائه می‌دهد، اما ویژگی‌های این کلاس لزوماً همه نمایه‌ها و سرویس‌های بلوتوثی را که دستگاه پشتیبانی می‌کند توصیف نمی‌کند.
BluetoothProfile
میانایی که نشان‌دهنده نمایه بلوتوث است. نمایه بلوتوث مشخصات میانای بی‌سیم برای ارتباط مبتنی بر بلوتوث بین دستگاه‌ها است. نمایه «دست‌آزاد» نمونه‌ای از این نمایه‌ها است. برای بحث بیشتر درباره نمایه‌ها، نمایه‌های بلوتوث را ببینید.
BluetoothHeadset
پشتیبانی از هدست‌های بلوتوثی را برای استفاده با تلفن‌های همراه فراهم می‌کند. این شامل نمایه «هدست بلوتوث» و نمایه «دست‌آزاد» (نسخه ۱.۵) می‌شود.
BluetoothA2dp
تعیین می‌کند که چگونه می‌توان صدای باکیفیت را ازطریق اتصال بلوتوث بااستفاده از «نمایه توزیع پیشرفته صدا» (A2DP) از دستگاهی به دستگاه دیگر جاری‌سازی کرد.
BluetoothHealth
نماینده پراکسی «نمایه دستگاه سلامت» است که سرویس بلوتوث را کنترل می‌کند.
BluetoothHealthCallback
کلاس انتزاعی که برای پیاده‌سازی بازخوانی‌های BluetoothHealth استفاده می‌کنید. باید این کلاس را گسترش دهید و روش‌های بازخوانی را برای دریافت به‌روزرسانی درباره تغییرات در وضعیت ثبت برنامه و وضعیت کانال بلوتوث پیاده‌سازی کنید.
BluetoothHealthAppConfiguration
نشان‌دهنده پیکربندی برنامه‌ای است که برنامه شخص ثالث Bluetooth Health برای برقراری ارتباط با دستگاه سلامت بلوتوث راه دور ثبت می‌کند.
BluetoothProfile.ServiceListener
رابطی که به مشتریان ارتباط میان‌پردازشی (IPC) BluetoothProfile اطلاع می‌دهد که به سرویس داخلی که نمایه خاصی را اجرا می‌کند متصل یا از آن قطع شده‌اند.