Android รองรับแพลตฟอร์มในตัวสำหรับบลูทูธพลังงานต่ำ (BLE) ในบทบาทหลักและมี API ที่แอปสามารถใช้เพื่อค้นหาอุปกรณ์ ค้นหาบริการ และส่งข้อมูล
Use Case ที่พบบ่อยมีดังนี้
- การโอนข้อมูลจำนวนเล็กน้อยระหว่างอุปกรณ์ที่อยู่ใกล้เคียง
- การโต้ตอบกับเซ็นเซอร์ตรวจหาบุคคลในบริเวณใกล้เคียงเพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ปรับแต่งตามตำแหน่งปัจจุบัน
BLE ได้รับการออกแบบให้ใช้พลังงานน้อยลงอย่างมากเมื่อเทียบกับบลูทูธคลาสสิก ซึ่งจะช่วยให้แอปสื่อสารกับอุปกรณ์ BLE ที่มีข้อกำหนดด้านพลังงานที่เข้มงวดมากขึ้นได้ เช่น เซ็นเซอร์ตรวจหาบุคคลในบริเวณใกล้เคียง เครื่องวัดอัตราการเต้นของหัวใจ และอุปกรณ์ออกกำลังกาย
ข้อควรระวัง: เมื่อผู้ใช้จับคู่อุปกรณ์กับอุปกรณ์อื่นโดยใช้ BLE แอปทั้งหมดในอุปกรณ์ของผู้ใช้จะเข้าถึงข้อมูลที่สื่อสารระหว่างอุปกรณ์ 2 เครื่องได้
ดังนั้น หากแอปของคุณเก็บข้อมูลที่ละเอียดอ่อน คุณควรใช้การรักษาความปลอดภัยระดับแอปเพื่อปกป้องความเป็นส่วนตัวของข้อมูลดังกล่าว
ข้อมูลเบื้องต้น
อุปกรณ์ที่เปิดใช้ BLE จะต้องสร้างช่องทางการสื่อสารก่อนจึงจะส่งข้อมูลระหว่างกันได้ การใช้ Bluetooth LE API กำหนดให้คุณต้องประกาศสิทธิ์หลายรายการในไฟล์ Manifest เมื่อแอปมีสิทธิ์ใช้บลูทูธแล้ว แอปจะต้องเข้าถึง BluetoothAdapter
และตรวจสอบว่าอุปกรณ์มีบลูทูธหรือไม่ หากมี อุปกรณ์จะสแกนหาอุปกรณ์ BLE ที่อยู่ใกล้เคียง
เมื่อพบอุปกรณ์แล้ว ระบบจะค้นหาความสามารถของอุปกรณ์ BLE โดยเชื่อมต่อกับเซิร์ฟเวอร์ GATT ในอุปกรณ์ BLE
เมื่อเชื่อมต่อแล้ว คุณจะโอนข้อมูลด้วยอุปกรณ์ที่เชื่อมต่อได้ โดยขึ้นอยู่กับบริการและลักษณะการทำงานที่มี
คำสำคัญและแนวคิด
ต่อไปนี้เป็นข้อมูลสรุปเกี่ยวกับคําศัพท์และแนวคิดสําคัญของ BLE
- โปรไฟล์แอตทริบิวต์ทั่วไป (GATT)
- โปรไฟล์ GATT เป็นข้อกำหนดทั่วไปสำหรับการส่งและรับข้อมูลสั้นๆ ที่เรียกว่า "แอตทริบิวต์" ผ่านลิงก์ BLE โปรไฟล์แอปพลิเคชัน BLE ปัจจุบันทั้งหมดอิงตาม GATT ดูข้อมูลเพิ่มเติมจากตัวอย่าง BluetoothLeGatt ของ Android บน GitHub
- โปรไฟล์
- Bluetooth SIG กำหนดโปรไฟล์มากมายสำหรับอุปกรณ์ BLE โปรไฟล์คือข้อกำหนดสำหรับวิธีการทำงานของอุปกรณ์ในแอปพลิเคชันหนึ่งๆ โปรดทราบว่าอุปกรณ์หนึ่งๆ สามารถใช้โปรไฟล์ได้มากกว่า 1 โปรไฟล์ เช่น อุปกรณ์อาจมีเครื่องวัดอัตราการเต้นของหัวใจและเครื่องตรวจระดับแบตเตอรี่
- Attribute Protocol (ATT)
- GATT สร้างขึ้นจากโปรโตคอลแอตทริบิวต์ (ATT) หรือที่เรียกว่า GATT/ATT ATT ได้รับการเพิ่มประสิทธิภาพให้ทำงานบนอุปกรณ์ BLE ได้ ด้วยเหตุนี้ จึงใช้ไบต์ให้น้อยที่สุด แอตทริบิวต์แต่ละรายการจะระบุด้วยตัวระบุที่ไม่ซ้ำกันแบบสากล (UUID) ซึ่งเป็นรูปแบบ 128 บิตมาตรฐานสำหรับรหัสสตริงที่ใช้ระบุข้อมูลโดยไม่ซ้ำกัน แอตทริบิวต์ที่ ATT ขนส่งจะจัดรูปแบบเป็นลักษณะและบริการ
- ลักษณะเฉพาะ
- ลักษณะประกอบด้วยค่าเดี่ยวและตัวระบุ 0-n ที่อธิบายค่าของลักษณะ คุณอาจคิดว่าลักษณะเป็นประเภทที่คล้ายกับคลาส
- ตัวระบุ
- ข้อบ่งชี้คือแอตทริบิวต์ที่กําหนดซึ่งอธิบายค่าลักษณะ ตัวอย่างเช่น ข้อบ่งชี้อาจระบุคำอธิบายที่มนุษย์อ่านได้ ช่วงค่าที่ยอมรับได้สำหรับค่าของลักษณะ หรือหน่วยวัดเฉพาะสำหรับค่าของลักษณะ
- บริการ
- บริการคือคอลเล็กชันลักษณะ เช่น คุณอาจมีบริการชื่อ "เครื่องวัดอัตราการเต้นของหัวใจ" ที่มีลักษณะ เช่น "การวัดอัตราการเต้นของหัวใจ" คุณสามารถดูรายการโปรไฟล์และบริการที่ใช้ GATT ที่มีอยู่ได้ใน bluetooth.org
บทบาทและความรับผิดชอบ
เมื่ออุปกรณ์โต้ตอบกับอุปกรณ์ BLE บทบาทและความรับผิดชอบจะแบ่งออกเป็น 2 วิธีดังนี้
ส่วนกลางกับอุปกรณ์ต่อพ่วง ซึ่งวิธีนี้ใช้กับการเชื่อมต่อ BLE เอง นั่นคืออุปกรณ์ในการสแกน มองหาโฆษณา และอุปกรณ์ในบทบาทอุปกรณ์ต่อพ่วงโฆษณา อุปกรณ์ 2 เครื่องที่รองรับบทบาทอุปกรณ์ต่อพ่วงเท่านั้นจะสื่อสารกันไม่ได้ และอุปกรณ์ 2 เครื่องที่รองรับบทบาทส่วนกลางเท่านั้นก็จะสื่อสารกันไม่ได้เช่นกัน
เซิร์ฟเวอร์ GATT กับไคลเอ็นต์ GATT ซึ่งจะกำหนดวิธีที่อุปกรณ์ 2 เครื่องสื่อสารกันหลังจากที่สร้างการเชื่อมต่อแล้ว อุปกรณ์ในบทบาทไคลเอ็นต์จะส่งคำขอข้อมูล และอุปกรณ์ในบทบาทเซิร์ฟเวอร์จะดำเนินการตามคำขอ
หากต้องการทำความเข้าใจความแตกต่างระหว่างส่วนบทบาทอุปกรณ์ต่อพ่วงส่วนกลางกับเซิร์ฟเวอร์-ไคลเอ็นต์ ให้ลองดูตัวอย่างพื้นที่ที่คุณมีโทรศัพท์ Android และเครื่องมือติดตามกิจกรรมที่เปิดใช้ BLE ซึ่งรายงานข้อมูลเซ็นเซอร์กลับไปยังโทรศัพท์
โทรศัพท์ซึ่งเป็นอุปกรณ์ส่วนกลางจะสแกนหาอุปกรณ์ BLE อย่างต่อเนื่อง เครื่องมือติดตามกิจกรรมซึ่งเป็นอุปกรณ์ต่อพ่วงจะโฆษณาและรอรับคำขอเชื่อมต่อ
หลังจากโทรศัพท์และอุปกรณ์ติดตามกิจกรรมสร้างการเชื่อมต่อแล้ว อุปกรณ์จะเริ่มโอนข้อมูลเมตา GATT ให้แก่กัน ในกรณีนี้ แอปที่ทำงานในโทรศัพท์จะส่งคำขอข้อมูล จึงทำหน้าที่เป็นไคลเอ็นต์ GATT อุปกรณ์ติดตามกิจกรรมจะตอบสนองต่อคําขอเหล่านั้น จึงทําหน้าที่เป็นเซิร์ฟเวอร์ GATT
การออกแบบแอปอีกแบบหนึ่งอาจเกี่ยวข้องกับการที่โทรศัพท์ทำหน้าที่เป็นเซิร์ฟเวอร์ GATT แทน ดูข้อมูลเพิ่มเติมที่ BluetoothGattServer