แพลตฟอร์ม Android รองรับสแต็กเครือข่ายบลูทูธ ซึ่ง ช่วยให้อุปกรณ์แลกเปลี่ยนข้อมูลกับอุปกรณ์บลูทูธอื่นๆ แบบไร้สายได้ เฟรมเวิร์กของแอปช่วยให้เข้าถึงฟังก์ชันการทำงานของบลูทูธผ่าน API ของบลูทูธได้ API เหล่านี้ช่วยให้แอปเชื่อมต่อกับอุปกรณ์บลูทูธอื่นๆ ได้ ซึ่งจะช่วยให้ใช้ฟีเจอร์ไร้สายแบบจุดต่อจุดและแบบหลายจุดได้
แอปสามารถทำสิ่งต่อไปนี้ได้โดยใช้ Bluetooth API
- สแกนหาอุปกรณ์บลูทูธอื่นๆ
- ค้นหาอุปกรณ์บลูทูธที่จับคู่แล้วในอะแดปเตอร์บลูทูธในเครื่อง
- สร้างแชแนล RFCOMM
- เชื่อมต่อกับอุปกรณ์อื่นๆ ผ่านการค้นพบบริการ
- โอนข้อมูลไปยังและจากอุปกรณ์อื่นๆ
- จัดการการเชื่อมต่อหลายรายการ
หัวข้อนี้มุ่งเน้นไปที่บลูทูธคลาสสิก บลูทูธคลาสสิกเป็นตัวเลือกที่เหมาะสม สำหรับการทำงานที่ใช้แบตเตอรี่มากกว่า ซึ่งรวมถึงการสตรีมและการสื่อสาร ระหว่างอุปกรณ์ สำหรับอุปกรณ์บลูทูธที่ต้องการพลังงานต่ำ ให้พิจารณาใช้การเชื่อมต่อบลูทูธพลังงานต่ำ
เอกสารนี้อธิบายโปรไฟล์บลูทูธต่างๆ และอธิบายวิธีใช้ Bluetooth API เพื่อทํางานหลัก 4 อย่างที่จําเป็นต่อการสื่อสารโดยใช้บลูทูธ
- การตั้งค่าบลูทูธ
- ค้นหาอุปกรณ์ที่จับคู่แล้วหรือพร้อมใช้งานในพื้นที่
- เชื่อมต่ออุปกรณ์
- การโอนข้อมูลระหว่างอุปกรณ์
หากต้องการดูตัวอย่างการใช้ Bluetooth API โปรดดูแอปตัวอย่างแชทผ่านบลูทูธ
ข้อมูลเบื้องต้น
หากต้องการให้อุปกรณ์ที่เปิดใช้บลูทูธส่งข้อมูลระหว่างกัน อุปกรณ์จะต้อง สร้างช่องทางการสื่อสารก่อนโดยใช้กระบวนการจับคู่ อุปกรณ์เครื่องหนึ่งซึ่งเป็น อุปกรณ์ที่ค้นพบได้จะทำให้ตัวเองพร้อมรับคำขอการเชื่อมต่อขาเข้า อุปกรณ์อื่นค้นหาอุปกรณ์ที่ค้นพบได้โดยใช้กระบวนการค้นหาบริการ หลังจากอุปกรณ์ที่ค้นพบได้ยอมรับคำขอจับคู่แล้ว อุปกรณ์ทั้ง 2 เครื่อง จะดำเนินการผูกอุปกรณ์ให้เสร็จสมบูรณ์ ซึ่งจะมีการแลกเปลี่ยนคีย์ความปลอดภัย อุปกรณ์จะแคชคีย์เหล่านี้เพื่อใช้ในภายหลัง หลังจากกระบวนการจับคู่และการเชื่อมต่อเสร็จสมบูรณ์ อุปกรณ์ทั้ง 2 เครื่องจะแลกเปลี่ยนข้อมูลกัน เมื่อเซสชันเสร็จสมบูรณ์ อุปกรณ์ที่เริ่มคำขอจับคู่จะปล่อยช่องที่ลิงก์ อุปกรณ์นั้นกับอุปกรณ์ที่ค้นพบได้ อย่างไรก็ตาม อุปกรณ์ทั้ง 2 เครื่องจะยังคงจับคู่กันอยู่ ดังนั้น จึงเชื่อมต่อใหม่ได้โดยอัตโนมัติในเซสชันในอนาคต ตราบใดที่อุปกรณ์ทั้ง 2 เครื่องอยู่ ในระยะกันและกัน และไม่มีอุปกรณ์ใดยกเลิกการจับคู่
การใช้ Bluetooth API ต้องประกาศสิทธิ์หลายรายการในไฟล์ Manifest เมื่อแอปได้รับสิทธิ์ใช้บลูทูธแล้ว แอปจะต้องเข้าถึง BluetoothAdapter
และตรวจสอบว่าอุปกรณ์มีบลูทูธหรือไม่
หากมีบลูทูธ คุณจะเชื่อมต่อได้โดยทำตาม 3 ขั้นตอนต่อไปนี้
- ค้นหาอุปกรณ์บลูทูธที่อยู่ใกล้เคียง ไม่ว่าจะเป็นอุปกรณ์ที่จับคู่ไว้แล้วหรืออุปกรณ์ใหม่
- เชื่อมต่อกับอุปกรณ์ บลูทูธ
- โอนข้อมูลด้วยอุปกรณ์ที่เชื่อมต่อ
อุปกรณ์บางเครื่องใช้โปรไฟล์บลูทูธที่เฉพาะเจาะจงซึ่งประกาศข้อมูล ที่อุปกรณ์นั้นให้
คลาสและอินเทอร์เฟซที่สำคัญ
API บลูทูธทั้งหมดจะอยู่ในแพ็กเกจ
android.bluetooth
ต่อไปนี้คือคลาสและอินเทอร์เฟซที่คุณต้องใช้เพื่อสร้างการเชื่อมต่อ Bluetooth
BluetoothAdapter
- แสดงถึงอะแดปเตอร์บลูทูธในเครื่อง (วิทยุบลูทูธ)
BluetoothAdapter
คือจุดแรกเข้าสำหรับการโต้ตอบผ่านบลูทูธทั้งหมด เมื่อใช้ ฟีเจอร์นี้ คุณจะค้นพบอุปกรณ์บลูทูธอื่นๆ สอบถามรายการอุปกรณ์ที่เชื่อมต่อ (จับคู่) สร้างอินสแตนซ์ของBluetoothDevice
โดยใช้ที่อยู่ MAC ที่รู้จัก และสร้างBluetoothServerSocket
เพื่อฟังการสื่อสารจากอุปกรณ์อื่นๆ ได้ BluetoothDevice
- แสดงถึงอุปกรณ์บลูทูธระยะไกล ใช้เพื่อขอการเชื่อมต่อกับอุปกรณ์ระยะไกลผ่าน
BluetoothSocket
หรือค้นหาข้อมูลเกี่ยวกับอุปกรณ์ เช่น ชื่อ ที่อยู่ คลาส และสถานะการจับคู่ BluetoothSocket
- แสดงอินเทอร์เฟซสำหรับซ็อกเก็ตบลูทูธ (คล้ายกับ TCP
Socket
) ซึ่งเป็นจุดเชื่อมต่อที่ อนุญาตให้แอปแลกเปลี่ยนข้อมูลกับอุปกรณ์บลูทูธอื่นโดยใช้InputStream
และOutputStream
BluetoothServerSocket
- แสดงถึงซ็อกเก็ตเซิร์ฟเวอร์ที่เปิดอยู่ซึ่งรอรับคำขอขาเข้า (คล้ายกับ TCP
ServerSocket
) หากต้องการเชื่อมต่ออุปกรณ์ 2 เครื่อง อุปกรณ์เครื่องหนึ่งต้องเปิดซ็อกเก็ตเซิร์ฟเวอร์ด้วยคลาสนี้ เมื่ออุปกรณ์บลูทูธระยะไกลส่งคำขอเชื่อมต่อมายังอุปกรณ์นี้ อุปกรณ์จะยอมรับการเชื่อมต่อ จากนั้นจะส่งBluetoothSocket
ที่เชื่อมต่อแล้วกลับไป BluetoothClass
- อธิบายลักษณะและความสามารถทั่วไปของอุปกรณ์บลูทูธ นี่คือชุดพร็อพเพอร์ตี้แบบอ่านอย่างเดียวที่กำหนดคลาสและ บริการของอุปกรณ์ แม้ว่าข้อมูลนี้จะให้คำแนะนำที่เป็นประโยชน์เกี่ยวกับประเภทของอุปกรณ์ แต่แอตทริบิวต์ของคลาสนี้ไม่ได้อธิบายโปรไฟล์และบริการบลูทูธทั้งหมดที่อุปกรณ์รองรับเสมอไป
BluetoothProfile
- อินเทอร์เฟซที่แสดงโปรไฟล์บลูทูธ โปรไฟล์บลูทูธคือ ข้อกำหนดอินเทอร์เฟซไร้สายสำหรับการสื่อสารที่ใช้บลูทูธระหว่าง อุปกรณ์ ตัวอย่างเช่น โปรไฟล์แฮนด์ฟรี ดูข้อมูลเพิ่มเติมเกี่ยวกับ โปรไฟล์ได้ที่โปรไฟล์บลูทูธ
BluetoothHeadset
- รองรับการใช้ชุดหูฟังบลูทูธกับโทรศัพท์มือถือ ซึ่งรวมถึงทั้งโปรไฟล์ชุดหูฟังบลูทูธและโปรไฟล์แฮนด์ฟรี (v1.5)
BluetoothA2dp
- กำหนดวิธีสตรีมเสียงคุณภาพสูงจากอุปกรณ์หนึ่งไปยังอีกอุปกรณ์หนึ่งผ่านการเชื่อมต่อบลูทูธโดยใช้โปรไฟล์การกระจายเสียงขั้นสูง (A2DP)
BluetoothHealth
- แสดงถึงพร็อกซีโปรไฟล์อุปกรณ์สุขภาพที่ควบคุมบริการบลูทูธ
BluetoothHealthCallback
- คลาสแบบนามธรรมที่คุณใช้เพื่อใช้
BluetoothHealth
การเรียกกลับ คุณ ต้องขยายคลาสนี้และใช้เมธอดเรียกกลับเพื่อรับข้อมูลอัปเดต เกี่ยวกับการเปลี่ยนแปลงสถานะการลงทะเบียนของแอปและสถานะช่องสัญญาณบลูทูธ BluetoothHealthAppConfiguration
- แสดงการกำหนดค่าแอปที่แอปสุขภาพบลูทูธของบุคคลที่สาม ลงทะเบียนเพื่อสื่อสารกับอุปกรณ์สุขภาพบลูทูธระยะไกล
BluetoothProfile.ServiceListener
- อินเทอร์เฟซที่แจ้งเตือนไคลเอ็นต์
BluetoothProfile
การสื่อสารระหว่างกระบวนการ (IPC) เมื่อเชื่อมต่อหรือยกเลิกการเชื่อมต่อกับบริการภายใน ที่เรียกใช้โปรไฟล์หนึ่งๆ