قبلاز اینکه برنامهتان بتواند ازطریق بلوتوث یا «بلوتوث کممصرف» ارتباط برقرار کند،
باید بررسی کنید که بلوتوث در دستگاه پشتیبانی میشود یا نه، و اگر پشتیبانی میشود،
مطمئن شوید که فعال است. توجه داشته باشید که این بررسی فقط درصورتی لازم است که
مشخصه android:required در ورودی فایل مانیفست <uses-feature.../>
روی false تنظیم شده باشد.
اگر از بلوتوث پشتیبانی نمیشود، باید بهطور مناسبی همه ویژگیهای بلوتوث را غیرفعال کنید. اگر بلوتوث پشتیبانی میشود اما غیرفعال است، میتوانید از کاربر بخواهید بدون ترک کردن برنامهتان، بلوتوث را فعال کند.
اولین قدم افزودن اجازههای بلوتوث به فایل مانیفست شما برای استفاده از میاناهای برنامهسازی کاربردی زیر است.
وقتی اجازهها داده شد، راهاندازی بلوتوث در دو مرحله
بااستفاده از BluetoothAdapter انجام میشود:
BluetoothAdapterرا دریافت کنید.BluetoothAdapterبرای هرگونه فعالیت بلوتوث لازم است.BluetoothAdapterنشاندهنده آداپتور بلوتوث خود دستگاه (رادیو بلوتوث) است. برای دریافتBluetoothAdapter، ابتدا بایدContextداشته باشید. از این زمینه برای دریافت نمونهای از سرویس سیستمBluetoothManagerاستفاده کنید. فراخوانیBluetoothManager#getAdapterشیءBluetoothAdapterرا به شما میدهد. اگرgetAdapter()مقدار تهی برگرداند، دستگاه از بلوتوث پشتیبانی نمیکند.برای مثال:
کاتلین
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); }
کادر گفتگویی ظاهر میشود که از کاربر اجازه میخواهد بلوتوث را فعال کند، همانطور که در شکل ۱ نشان داده شده است. اگر کاربر اجازه را اعطا کند، سیستم شروع به فعال کردن بلوتوث میکند، و پساز تکمیل (یا ناموفق بودن) فرایند، تمرکز به برنامه شما برمیگردد.
شکل ۱. کادر گفتگوی فعال کردن بلوتوث.
ثابت REQUEST_ENABLE_BT که به
startActivityForResult()
منتقل شده است، عدد صحیحی است که بهصورت محلی تعریف شده است و باید بزرگتر یا مساوی ۰ باشد. سیستم
این ثابت را در پیادهسازی
onActivityResult()
بهعنوان پارامتر requestCode به شما برمیگرداند.
اگر فعال کردن بلوتوث موفقیتآمیز باشد، فعالیت شما کد نتیجه
RESULT_OK را در
onActivityResult() callback دریافت میکند. اگر بلوتوث بهدلیل خطا فعال نشده باشد (یا
کاربر «رد کردن» را انتخاب کرده باشد)، کد نتیجه
RESULT_CANCELED است.
بهطور اختیاری، برنامهتان میتواند به هدف همهفرستی
ACTION_STATE_CHANGED
نیز گوش دهد که سیستم هرزمان وضعیت بلوتوث تغییر کند آن را همهفرستی میکند. این پخش حاوی فیلدهای اضافی
EXTRA_STATE و
EXTRA_PREVIOUS_STATE است
که بهترتیب حاوی وضعیتهای جدید و قدیمی بلوتوث هستند. مقادیر احتمالی برای
این فیلدهای اضافی عبارتند از
STATE_TURNING_ON،
STATE_ON،
STATE_TURNING_OFF،
و STATE_OFF.
اگر برنامهتان نیاز به شناسایی تغییرات زمان اجرا در وضعیت بلوتوث داشته باشد، گوش دادن به این همهفرستی میتواند مفید باشد.
وقتی بلوتوث در دستگاه فعال شد، میتوانید از هر دو بلوتوث کلاسیک و بلوتوث کممصرف استفاده کنید.
برای بلوتوث کلاسیک، میتوانید دستگاههای بلوتوث را پیدا کنید و به دستگاههای بلوتوث متصل شوید.
برای «بلوتوث کممصرف»، میتوانید دستگاههای BLE را پیدا کنید، به سرور GATT متصل شوید، و دادههای BLE را منتقل کنید.