ก่อนที่แอปของคุณจะสื่อสารผ่านบลูทูธหรือบลูทูธพลังงานต่ำได้
คุณต้องยืนยันว่าอุปกรณ์รองรับบลูทูธ และหากรองรับ
ให้ตรวจสอบว่าได้เปิดใช้แล้ว โปรดทราบว่าการตรวจสอบนี้จำเป็นเฉพาะในกรณีที่
แอตทริบิวต์ android:required
ในรายการไฟล์ Manifest <uses-feature.../>
คือ
ตั้งค่าเป็น false
หากไม่สนับสนุนบลูทูธ คุณควรปิดใช้งานบลูทูธใดๆ ก็ตามอย่างสุภาพ ใหม่ๆ หากบลูทูธได้รับการสนับสนุนแต่ปิดการใช้งานอยู่ คุณสามารถร้องขอให้มีการ ผู้ใช้จะเปิดใช้บลูทูธโดยไม่ต้องออกจากแอปได้
ขั้นตอนแรกคือ การเพิ่มสิทธิ์การใช้บลูทูธ ลงในไฟล์ Manifest เพื่อใช้ API ต่อไปนี้
เมื่อมีสิทธิ์เรียบร้อยแล้ว การตั้งค่าบลูทูธจะทำได้ใน 2 ขั้นตอน
โดยใช้ BluetoothAdapter
:
สมัคร
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 }
เปิดใช้บลูทูธ
ขั้นตอนต่อไป คุณต้องตรวจสอบว่าเปิดใช้บลูทูธอยู่ โทร
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
การฟังการออกอากาศนี้มีประโยชน์หากแอปต้องตรวจหารันไทม์
การเปลี่ยนแปลงสถานะของบลูทูธ
เมื่อเปิดใช้บลูทูธในอุปกรณ์แล้ว คุณจะใช้ทั้งบลูทูธแบบคลาสสิกและ บลูทูธพลังงานต่ำ
สำหรับบลูทูธแบบคลาสสิก คุณสามารถค้นหาอุปกรณ์บลูทูธ และ เชื่อมต่อกับอุปกรณ์บลูทูธ
สำหรับบลูทูธพลังงานต่ำ คุณจะค้นหาอุปกรณ์ BLE, เชื่อมต่อกับเซิร์ฟเวอร์ GATT และ โอนข้อมูล BLE