บลูทูธ

ไอคอน 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

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

HIDL

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

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

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

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