راه‌اندازی بلوتوث

قبل‌از اینکه برنامه‌تان بتواند ازطریق بلوتوث یا «بلوتوث کم‌مصرف» ارتباط برقرار کند، باید بررسی کنید که بلوتوث در دستگاه پشتیبانی می‌شود یا نه، و اگر پشتیبانی می‌شود، مطمئن شوید که فعال است. توجه داشته باشید که این بررسی فقط درصورتی لازم است که مشخصه android:required در ورودی فایل مانیفست <uses-feature.../> روی false تنظیم شده باشد.

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

اولین قدم افزودن اجازه‌های بلوتوث به فایل مانیفست شما برای استفاده از میاناهای برنامه‌سازی کاربردی زیر است.

وقتی اجازه‌ها داده شد، راه‌اندازی بلوتوث در دو مرحله بااستفاده از BluetoothAdapter انجام می‌شود:

  1. ‫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
    }
  2. بلوتوث را فعال کنید.

    سپس، باید مطمئن شوید بلوتوث فعال است. 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 را منتقل کنید.