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