Google 致力于为黑人社区推动种族平等。查看具体举措
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

บลูทู ธ

ไอคอน Android Bluetooth HAL

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

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

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

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

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

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

HIDL

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

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

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

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

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

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

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

การใช้ HAL

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

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