ตั้งค่าบลูทูธ

ก่อนที่แอปของคุณจะสื่อสารผ่านบลูทูธหรือบลูทูธพลังงานต่ำได้ คุณต้องยืนยันว่าอุปกรณ์รองรับบลูทูธ และหากรองรับ ให้ตรวจสอบว่าได้เปิดใช้แล้ว โปรดทราบว่าการตรวจสอบนี้จำเป็นเฉพาะในกรณีที่ แอตทริบิวต์ android:required ในรายการไฟล์ Manifest <uses-feature.../> คือ ตั้งค่าเป็น false

หากไม่สนับสนุนบลูทูธ คุณควรปิดใช้งานบลูทูธใดๆ ก็ตามอย่างสุภาพ ใหม่ๆ หากบลูทูธได้รับการสนับสนุนแต่ปิดการใช้งานอยู่ คุณสามารถร้องขอให้มีการ ผู้ใช้จะเปิดใช้บลูทูธโดยไม่ต้องออกจากแอปได้

ขั้นตอนแรกคือ การเพิ่มสิทธิ์การใช้บลูทูธ ลงในไฟล์ Manifest เพื่อใช้ API ต่อไปนี้

เมื่อมีสิทธิ์เรียบร้อยแล้ว การตั้งค่าบลูทูธจะทำได้ใน 2 ขั้นตอน โดยใช้ BluetoothAdapter:

  1. สมัคร BluetoothAdapter

    ต้องมี BluetoothAdapter สำหรับกิจกรรมบลูทูธทั้งหมด BluetoothAdapter แสดงถึงอะแดปเตอร์บลูทูธของอุปกรณ์ ( วิทยุบลูทูธ) คุณต้องมี BluetoothAdapter ก่อนจึงจะสมัครได้ Context ใช้บริบทนี้เพื่อดู อินสแตนซ์ของ BluetoothManager บริการของระบบ กำลังโทรหา BluetoothManager#getAdapter จะให้ออบเจ็กต์ BluetoothAdapter แก่คุณ หาก getAdapter() แสดงผลเป็น Null แสดงว่าอุปกรณ์ไม่รองรับบลูทูธ

    เช่น

    Kotlin

    val bluetoothManager: BluetoothManager = getSystemService(BluetoothManager::class.java)
    val bluetoothAdapter: BluetoothAdapter? = bluetoothManager.getAdapter()
    if (bluetoothAdapter == null) {
      // Device doesn't support Bluetooth
    }
    

    Java

    BluetoothManager bluetoothManager = getSystemService(BluetoothManager.class);
    BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter();
    if (bluetoothAdapter == null) {
      // Device doesn't support Bluetooth
    }
    
  2. เปิดใช้บลูทูธ

    ขั้นตอนต่อไป คุณต้องตรวจสอบว่าเปิดใช้บลูทูธอยู่ โทร isEnabled() ถึง ตรวจสอบว่าบลูทูธเปิดอยู่ไหม หากวิธีนี้แสดงค่า "เท็จ" บลูทูธก็จะปิดใช้งาน โทรเพื่อขอเปิดใช้บลูทูธ startActivityForResult() ใน ACTION_REQUEST_ENABLE การดำเนินการผ่าน Intent การโทรนี้จะออกคำขอเปิดใช้บลูทูธผ่าน การตั้งค่าระบบ (โดยไม่ต้องหยุดแอปของคุณ)

    เช่น

    Kotlin

    if (bluetoothAdapter?.isEnabled == false) {
      val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
      startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
    }
    

    Java

    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 การฟังการออกอากาศนี้มีประโยชน์หากแอปต้องตรวจหารันไทม์ การเปลี่ยนแปลงสถานะของบลูทูธ

เคล็ดลับ: การเปิดใช้การค้นพบได้จะเป็นการเปิดใช้โดยอัตโนมัติ บลูทูธ หากคุณวางแผนที่จะเปิดใช้การค้นพบอุปกรณ์อย่างสม่ำเสมอก่อนวันที่ดังกล่าว ใช้งานบลูทูธ คุณสามารถข้ามขั้นตอนที่ 2 ในขั้นตอนก่อนหน้านี้ได้

เมื่อเปิดใช้บลูทูธในอุปกรณ์แล้ว คุณจะใช้ทั้งบลูทูธแบบคลาสสิกและ บลูทูธพลังงานต่ำ

สำหรับบลูทูธแบบคลาสสิก คุณสามารถค้นหาอุปกรณ์บลูทูธ และ เชื่อมต่อกับอุปกรณ์บลูทูธ

สำหรับบลูทูธพลังงานต่ำ คุณจะค้นหาอุปกรณ์ BLE, เชื่อมต่อกับเซิร์ฟเวอร์ GATT และ โอนข้อมูล BLE