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

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

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

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

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

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

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

برای نمایش استفاده از APIهای بلوتوث، به برنامه نمونه گپ بلوتوث مراجعه کنید.

اصول اولیه

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

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

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

کلاس ها و رابط های کلیدی

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

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