ব্লুটুথ সেট-আপ করুন

আপনার অ্যাপ ব্লুটুথ বা ব্লুটুথ লো এনার্জির মাধ্যমে যোগাযোগ করার আগে, আপনাকে যাচাই করতে হবে যে ডিভাইসে ব্লুটুথ কাজ করে কিনা এবং যদি করে, তাহলে নিশ্চিত করুন যে এটি চালু আছে। মনে রাখবেন, <uses-feature.../> ম্যানিফেস্ট ফাইল এন্ট্রিতে android:required অ্যাট্রিবিউট false-এ সেট করা থাকলে তবেই এই চেক করা প্রয়োজন।

ব্লুটুথ কাজ না করলে, আপনাকে ব্লুটুথ ফিচার বন্ধ করে দিতে হবে। ব্লুটুথ কাজ করে কিন্তু বন্ধ করা থাকলে, আপনি ব্যবহারকারীকে আপনার অ্যাপ থেকে না বেরিয়েই ব্লুটুথ চালু করার অনুরোধ করতে পারেন।

নিম্নলিখিত API ব্যবহার করার জন্য প্রথম ধাপ হল আপনার ম্যানিফেস্ট ফাইলে ব্লুটুথ সংক্রান্ত অনুমতি যোগ করা।

অনুমতি দেওয়া হয়ে গেলে, BluetoothAdapter ব্যবহার করে দুটি ধাপে ব্লুটুথ সেট-আপ করা হয়:

  1. BluetoothAdapter পান।

    যেকোনও এবং সব ব্লুটুথ অ্যাক্টিভিটির জন্য BluetoothAdapter প্রয়োজন। BluetoothAdapter ডিভাইসের নিজস্ব ব্লুটুথ অ্যাডাপ্টার (ব্লুটুথ রেডিও) দেখায়। BluetoothAdapter পেতে, প্রথমে আপনার কাছে একটি Context থাকতে হবে। BluetoothManager সিস্টেম পরিষেবার ইনস্ট্যান্স পেতে এই প্রসঙ্গ ব্যবহার করুন। BluetoothManager#getAdapter-কে কল করলে আপনি একটি BluetoothAdapter অবজেক্ট পাবেন। getAdapter() যদি নাল রিটার্ন করে, তাহলে ডিভাইসে ব্লুটুথ কাজ করে না।

    যেমন:

    Kotlin

    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 ইনটেন্ট অ্যাকশন পাস করুন। এই কল সিস্টেম সেটিংসের মাধ্যমে ব্লুটুথ চালু করার অনুরোধ করে (আপনার অ্যাপ বন্ধ না করেই)।

    যেমন:

    Kotlin

    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 প্যারামিটার হিসেবে পাস করে।

ব্লুটুথ চালু করা সম্ভব হলে, আপনার অ্যাক্টিভিটি onActivityResult() কলব্যাকে RESULT_OK ফলাফল কোড পায়। কোনও সমস্যার কারণে ব্লুটুথ চালু করা না গেলে (অথবা ব্যবহারকারী "প্রত্যাখ্যান করুন" বিকল্প বেছে নিলে) সেক্ষেত্রে ফলাফল কোড হল RESULT_CANCELED।

এছাড়াও, আপনার অ্যাপ ACTION_STATE_CHANGED ব্রডকাস্ট ইনটেন্ট শুনতে পারে, যা ব্লুটুথের স্ট্যাটাস পরিবর্তন হলে সিস্টেম ব্রডকাস্ট করে। এই ব্রডকাস্টে অতিরিক্ত ফিল্ড EXTRA_STATE এবং EXTRA_PREVIOUS_STATE আছে, যার মধ্যে যথাক্রমে নতুন ও পুরনো ব্লুটুথ স্ট্যাটাস আছে। এইসব অতিরিক্ত ফিল্ডের সম্ভাব্য ভ্যালু হল STATE_TURNING_ON, STATE_ON, STATE_TURNING_OFF, এবং STATE_OFF। আপনার অ্যাপকে ব্লুটুথ স্ট্যাটাসে করা রানটাইম পরিবর্তন শনাক্ত করতে হলে, এই ব্রডকাস্টের জন্য শোনা উপযোগী হতে পারে।

পরামর্শ: খুঁজে নেওয়ার যোগ্যতা চালু করলে ব্লুটুথ অটোমেটিক চালু হয়ে যায়। আপনি যদি ব্লুটুথ অ্যাক্টিভিটি করার আগে ডিভাইস খুঁজে নেওয়ার যোগ্যতা ধারাবাহিকভাবে চালু করার পরিকল্পনা করেন, তাহলে আগের ধাপগুলির মধ্যে ২ নম্বর ধাপটি এড়িয়ে যেতে পারেন।

ডিভাইসে ব্লুটুথ চালু করা হলে, আপনি ব্লুটুথ ক্লাসিক ও ব্লুটুথ লো এনার্জি, দুটিই ব্যবহার করতে পারবেন।

ব্লুটুথ ক্লাসিকের জন্য, আপনি ব্লুটুথ ডিভাইস খুঁজতে এবং ব্লুটুথ ডিভাইসের সাথে কানেক্ট করতে পারবেন।

ব্লুটুথ লো এনার্জির জন্য, আপনি BLE ডিভাইস খুঁজতে, GATT সার্ভারের সাথে কানেক্ট করতে এবং BLE ডেটা ট্রান্সফার করতে পারবেন।