پلتفرم اندروید شامل پشتیبانی از پشته شبکه بلوتوث است که به دستگاه اجازه می دهد به صورت بی سیم داده ها را با سایر دستگاه های بلوتوث مبادله کند. چارچوب برنامه دسترسی به عملکرد بلوتوث را از طریق 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) را هنگامی که به سرویس داخلی که نمایه خاصی را اجرا می کند متصل شده یا از آن جدا شده اند مطلع می کند.