บลูทูธ

ไอคอน HAL บลูทูธของ Android

Android มีสแต็กบลูทูธเริ่มต้นที่รองรับทั้งบลูทูธคลาสสิกและบลูทูธพลังงานต่ำ (BLE) อุปกรณ์ Android ใช้บลูทูธเพื่อสร้างเครือข่ายส่วนบุคคลเพื่อส่ง และรับข้อมูลกับอุปกรณ์บลูทูธที่อยู่ใกล้เคียง

ใน Android 4.3 ขึ้นไป สแต็กบลูทูธของ Android จะช่วยให้สามารถใช้ BLE ได้ หากต้องการใช้ BLE API อย่างเต็มรูปแบบ ให้ทำตาม ข้อกำหนด HCI ของบลูทูธใน Android อุปกรณ์ Android ที่มีชิปเซ็ตที่ผ่านการรับรองสามารถใช้บลูทูธแบบคลาสสิกหรือทั้งบลูทูธแบบคลาสสิกและ BLE ได้ BLE ไม่สามารถใช้งานร่วมกับชิปเซ็ตบลูทูธรุ่นเก่าได้

ใน Android 8.0 สแต็กบลูทูธมีคุณสมบัติครบถ้วนสำหรับบลูทูธ 5 หากต้องการใช้ฟีเจอร์บลูทูธ 5 ที่มี อุปกรณ์ต้องมีชิปเซ็ตที่ผ่านการรับรองบลูทูธ 5

สถาปัตยกรรม Android

แอปบลูทูธจะสื่อสารกับกระบวนการบลูทูธผ่าน Binder กระบวนการบลูทูธ ใช้ Java Native Interface (JNI) เพื่อสื่อสารกับสแต็กบลูทูธและให้ นักพัฒนาแอปเข้าถึงโปรไฟล์บลูทูธต่างๆ แผนภาพนี้แสดงโครงสร้างทั่วไปของสแต็กบลูทูธ

แผนภาพแสดงเลเยอร์ของสแต็กบลูทูธของ Android

รูปที่ 1 สถาปัตยกรรมบลูทูธของ Android

เฟรมเวิร์กแอป
ที่ระดับเฟรมเวิร์กของแอปคือโค้ดของแอป ซึ่งใช้ android.bluetooth API เพื่อโต้ตอบกับฮาร์ดแวร์บลูทูธ ภายใน โค้ดนี้จะเรียกใช้กระบวนการ Bluetooth ผ่านกลไก Binder IPC
แอปบลูทูธ
แอปบลูทูธซึ่งอยู่ใน packages/modules/Bluetooth/android/app จะได้รับการแพ็กเกจเป็นแอป Android และใช้โปรไฟล์บลูทูธที่เลเยอร์เฟรมเวิร์ก Android แอปนี้จะเรียกใช้สแต็กบลูทูธผ่าน JNI
JNI
โค้ด JNI ที่เชื่อมโยงกับ android.bluetooth อยู่ใน packages/modules/Bluetooth/android/app/jni โค้ด JNI จะเรียกใช้สแต็กบลูทูธเมื่อมีการดำเนินการบลูทูธบางอย่าง เช่น เมื่อมีการค้นพบอุปกรณ์
สแต็กบลูทูธ
สแต็ก Bluetooth เริ่มต้นมีอยู่ใน AOSP และอยู่ใน packages/modules/Bluetooth/system สแต็กจะใช้ HAL บลูทูธทั่วไป และปรับแต่งด้วยส่วนขยายและการเปลี่ยนแปลงการกำหนดค่า
การติดตั้งใช้งานของผู้ให้บริการ
อุปกรณ์ของผู้ให้บริการจะโต้ตอบกับสแต็กบลูทูธโดยใช้คำจำกัดความของอินเทอร์เฟซ HAL (HIDL)

HIDL

HIDL กำหนดอินเทอร์เฟซระหว่าง สแต็ก Bluetooth กับการติดตั้งของผู้ให้บริการ หากต้องการสร้างไฟล์ HIDL ของบลูทูธ ให้ส่ง ไฟล์อินเทอร์เฟซบลูทูธไปยังเครื่องมือสร้าง HIDL ไฟล์อินเทอร์เฟซจะอยู่ใน hardware/interfaces/bluetooth

การพัฒนาสแต็กบลูทูธ

สแต็กบลูทูธของ Android เป็นสแต็กบลูทูธที่สมบูรณ์ในตัวเอง รายการการรับรองจะอยู่ใน เว็บไซต์ของ Bluetooth SIG (ต้องลงชื่อเข้าใช้) ในส่วน QDID 169365

สแต็กบลูทูธหลักอยู่ใน packages/modules/Bluetooth การพัฒนาเกิดขึ้นใน AOSP และเรายินดีรับการมีส่วนร่วม