قبل از اینکه برنامه شما بتواند از طریق بلوتوث یا بلوتوث کم انرژی ارتباط برقرار کند، باید تأیید کنید که بلوتوث در دستگاه پشتیبانی میشود و اگر پشتیبانی میشود، مطمئن شوید که فعال است. توجه داشته باشید که این بررسی فقط در صورتی ضروری است که ویژگی android:required در ورودی فایل مانیفست <uses-feature.../> روی false تنظیم شده باشد.
اگر بلوتوث پشتیبانی نمیشود، باید هر یک از ویژگیهای بلوتوث را به راحتی غیرفعال کنید. اگر بلوتوث پشتیبانی میشود، اما غیرفعال است، میتوانید از کاربر درخواست کنید که بلوتوث را بدون ترک برنامهتان فعال کند.
اولین قدم اضافه کردن مجوزهای بلوتوث به فایل مانیفست خود برای استفاده از APIهای زیر است.
پس از برقراری مجوزها، راه اندازی بلوتوث در دو مرحله با استفاده از BluetoothAdapter انجام می شود:
BluetoothAdapterدریافت کنید.BluetoothAdapterبرای تمام فعالیتهای بلوتوث مورد نیاز است.BluetoothAdapterنشان دهنده آداپتور بلوتوث خود دستگاه (رادیو بلوتوث) است. برای دریافتBluetoothAdapter، ابتدا باید یکContextداشته باشید. از این زمینه برای به دست آوردن نمونه ای از سرویس سیستمBluetoothManagerاستفاده کنید. با فراخوانیBluetoothManager#getAdapterیک شئBluetoothAdapterدر اختیار شما قرار می گیرد. اگرgetAdapter()null را برگرداند، دستگاه از بلوتوث پشتیبانی نمی کند.به عنوان مثال:
کاتلین
val bluetoothManager: BluetoothManager = getSystemService(BluetoothManager::class.java) val bluetoothAdapter: BluetoothAdapter? = bluetoothManager.getAdapter() if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
جاوا
BluetoothManager bluetoothManager = getSystemService(BluetoothManager.class); BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter(); if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
بلوتوث را فعال کنید
در مرحله بعد، باید مطمئن شوید که بلوتوث فعال است. برای بررسی اینکه آیا بلوتوث در حال حاضر فعال است یا خیر
isEnabled()فراخوانی کنید. اگر این روش false را برگرداند، بلوتوث غیرفعال است. برای درخواست فعال کردن بلوتوث،startActivityForResult()را فراخوانی کنید و یک اقدام قصدACTION_REQUEST_ENABLEرا انجام دهید. این تماس درخواستی برای فعال کردن بلوتوث از طریق تنظیمات سیستم (بدون توقف برنامه شما) صادر می کند.به عنوان مثال:
کاتلین
if (bluetoothAdapter?.isEnabled == false) { val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE) startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT) }
جاوا
if (!bluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); }
همانطور که در شکل 1 نشان داده شده است، یک گفتگو ظاهر می شود که از کاربر اجازه می دهد تا بلوتوث را فعال کند. اگر کاربر اجازه دهد، سیستم شروع به فعال کردن بلوتوث می کند و پس از تکمیل فرآیند (یا با شکست) تمرکز به برنامه شما برمی گردد.

شکل 1. گفتگوی فعال کردن بلوتوث.
ثابت REQUEST_ENABLE_BT به startActivityForResult() یک عدد صحیح تعریف شده محلی است که باید بزرگتر یا مساوی 0 باشد. سیستم این ثابت را در پیاده سازی onActivityResult() به عنوان پارامتر requestCode به شما پس می دهد.
اگر فعال کردن بلوتوث با موفقیت انجام شود، فعالیت شما کد نتیجه RESULT_OK را در پاسخ به تماس onActivityResult() دریافت می کند. اگر بلوتوث به دلیل خطایی فعال نشده باشد (یا کاربر به "انکار" پاسخ دهد)، کد نتیجه RESULT_CANCELED است.
در صورت تمایل، برنامه شما همچنین میتواند به هدف پخش ACTION_STATE_CHANGED گوش دهد، که هر زمان که وضعیت بلوتوث تغییر کند، سیستم پخش میکند. این پخش حاوی فیلدهای اضافی EXTRA_STATE و EXTRA_PREVIOUS_STATE است که به ترتیب شامل حالات بلوتوث جدید و قدیمی هستند. مقادیر ممکن برای این فیلدهای اضافی عبارتند از STATE_TURNING_ON ، STATE_ON ، STATE_TURNING_OFF و STATE_OFF . اگر برنامه شما نیاز به تشخیص تغییرات زمان اجرا ایجاد شده در حالت بلوتوث داشته باشد، گوش دادن به این پخش می تواند مفید باشد.
وقتی بلوتوث روی دستگاه فعال شد، میتوانید از بلوتوث کلاسیک و بلوتوث کم انرژی استفاده کنید.
برای بلوتوث کلاسیک، میتوانید دستگاههای بلوتوث را پیدا کنید و به دستگاههای بلوتوث متصل شوید .
برای بلوتوث کم مصرف، میتوانید دستگاههای BLE را پیدا کنید ، به سرور GATT متصل شوید و دادههای BLE را انتقال دهید .