บลูทู ธ

ไอคอน Android Bluetooth HAL

Android มีสแต็ค Bluetooth เริ่มต้นที่รองรับทั้ง Classic Bluetooth และ Bluetooth Low Energy การใช้บลูทูธ อุปกรณ์ Android สามารถสร้างเครือข่ายพื้นที่ส่วนบุคคลเพื่อส่งและรับข้อมูลด้วยอุปกรณ์บลูทูธที่อยู่ใกล้เคียง

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

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

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

แอปพลิเคชั่น Bluetooth สื่อสารกับกระบวนการ Bluetooth ผ่าน Binder กระบวนการ Bluetooth ใช้ JNI เพื่อสื่อสารกับสแต็ค Bluetooth และให้นักพัฒนาสามารถเข้าถึงโปรไฟล์ Bluetooth ต่างๆ แผนภาพนี้แสดงโครงสร้างทั่วไปของสแต็ก Bluetooth:

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

HIDL

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

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

Android Bluetooth stack เป็น Bluetooth stack ที่มีคุณสมบัติครบถ้วน รายการคุณสมบัติอยู่ในเว็บไซต์ Bluetooth SIG ภายใต้ QDID 169365

สแต็ค Bluetooth หลักอยู่ใน system/bt การพัฒนาเกิดขึ้นใน AOSP และยินดีให้ความช่วยเหลือ

Android 7.x และสถาปัตยกรรมรุ่นก่อนหน้า

บริการระบบ Bluetooth สื่อสารกับสแต็ก Bluetooth ผ่าน JNI และกับแอปพลิเคชันผ่าน Binder IPC บริการระบบช่วยให้นักพัฒนาสามารถเข้าถึงโปรไฟล์ Bluetooth ต่างๆ ได้ แผนภาพนี้แสดงโครงสร้างทั่วไปของสแต็ก Bluetooth:

สถาปัตยกรรมบลูทูธ Android
รูปที่ 2 Android 7.x และสถาปัตยกรรม Bluetooth รุ่นก่อนหน้า
กรอบงานการสมัคร
ที่ระดับเฟรมเวิร์กของแอปพลิเคชันคือโค้ดแอปพลิเคชัน ซึ่งใช้ android.bluetooth API เพื่อโต้ตอบกับฮาร์ดแวร์บลูทูธ ภายใน รหัสนี้เรียกกระบวนการ Bluetooth ผ่านกลไก Binder IPC
บริการระบบบลูทูธ
บริการระบบ Bluetooth ซึ่งอยู่ใน packages/apps/Bluetooth ถูกจัดแพ็คเกจเป็นแอพ Android และใช้บริการ Bluetooth และโปรไฟล์ที่เลเยอร์เฟรมเวิร์กของ Android แอปนี้เรียกเข้าสู่เลเยอร์ HAL ผ่าน JNI
JNI
รหัส JNI ที่เชื่อมโยงกับ android.bluetooth อยู่ใน packages/apps/Bluetooth/jni รหัส JNI จะเรียกใช้ในเลเยอร์ HAL และรับการเรียกกลับจาก HAL เมื่อมีการใช้งานบลูทูธบางอย่างเกิดขึ้น เช่น เมื่อพบอุปกรณ์
ฮาล
เลเยอร์ที่เป็นนามธรรมของฮาร์ดแวร์กำหนดอินเทอร์เฟซมาตรฐานที่android.bluetooth API และกระบวนการ Bluetooth เรียกใช้ และคุณต้องปรับใช้เพื่อให้ฮาร์ดแวร์บลูทูธของคุณทำงานได้อย่างถูกต้อง ไฟล์ส่วนหัวสำหรับ Bluetooth HAL คือ hardware/libhardware/include/hardware/bluetooth.h นอกจากนี้ ให้ตรวจสอบไฟล์ hardware/libhardware/include/hardware/bt_*.h ทั้งหมด
สแต็คบลูทูธ
สแต็ค Bluetooth เริ่มต้นมีให้สำหรับคุณและอยู่ใน system/bt สแต็กใช้ Bluetooth HAL ทั่วไปและปรับแต่งด้วยส่วนขยายและการเปลี่ยนแปลงการกำหนดค่า
ส่วนขยายผู้ขาย
หากต้องการเพิ่มส่วนขยายที่กำหนดเองและเลเยอร์ HCI สำหรับการติดตาม คุณสามารถสร้างโมดูล libbt-vendor และระบุส่วนประกอบเหล่านี้ได้

การนำ HAL . ไปปฏิบัติ

Bluetooth HAL อยู่ใน /hardware/libhardware/include/hardware/bluetooth.h ไฟล์ bluetooth.h มีอินเทอร์เฟซพื้นฐานสำหรับสแต็ก Bluetooth และคุณต้องใช้งานฟังก์ชันของมัน

ไฟล์เฉพาะโปรไฟล์จะอยู่ในไดเร็กทอรีเดียวกัน สำหรับรายละเอียด โปรดดูที่ การ อ้างอิงไฟล์ HAL