
Android מספקת מחסנית Bluetooth שמוגדרת כברירת מחדל ותומכת גם ב-Bluetooth קלאסי וגם ב-Bluetooth עם צריכת אנרגיה נמוכה (BLE). באמצעות Bluetooth, מכשירי Android יכולים ליצור רשתות אזור אישיות כדי לשלוח ולקבל נתונים עם מכשירי Bluetooth בקרבת מקום.
ב-Android מגרסה 4.3 ואילך, מחסנית ה-Bluetooth של Android מספקת את היכולת להטמיע BLE. כדי להשתמש במלוא היכולות של ממשקי ה-API של BLE, צריך לפעול לפי הדרישות של Android Bluetooth HCI. מכשירי Android עם ערכת שבבים מתאימה יכולים להטמיע Bluetooth קלאסי או גם Bluetooth קלאסי וגם BLE. BLE לא תואם לאחור לערכות שבבים ישנות יותר של Bluetooth.
ב-Android 8.0, מחסנית ה-Bluetooth עומדת בדרישות של Bluetooth 5. כדי להשתמש בתכונות הזמינות של Bluetooth 5, במכשיר צריך להיות ערכת שבבים שעומדת בדרישות של Bluetooth 5.
ארכיטקטורה ל-Android
אפליקציית Bluetooth מתקשרת עם תהליך ה-Bluetooth באמצעות Binder. תהליך ה-Bluetooth משתמש ב-Java Native Interface (JNI) כדי לתקשר עם מחסנית ה-Bluetooth, ומספק למפתחים גישה לפרופילים שונים של Bluetooth. הדיאגרמה הזו מציגה את המבנה הכללי של מחסנית Bluetooth:
איור 1. ארכיטקטורת Bluetooth ב-Android.
- app framework
-
ברמת מסגרת האפליקציה נמצא קוד האפליקציה, שמשתמש בממשקי ה-API
android.bluetooth
כדי ליצור אינטראקציה עם חומרת ה-Bluetooth. באופן פנימי, הקוד הזה מפעיל את תהליך ה-Bluetooth באמצעות מנגנון ה-IPC של Binder. - אפליקציית Bluetooth
-
אפליקציית ה-Bluetooth, שנמצאת ב-
packages/modules/Bluetooth/android/app
, מגיעה כחבילה של אפליקציית Android ומיישמת את פרופילי ה-Bluetooth בשכבת מסגרת Android. האפליקציה הזו קוראת למערך Bluetooth דרך JNI. - JNI
-
קוד ה-JNI שמשויך ל-
android.bluetooth
נמצא ב-packages/modules/Bluetooth/android/app/jni
. קוד ה-JNI קורא למערך Bluetooth כשמתרחשות פעולות מסוימות של Bluetooth, למשל כשמגלים מכשירים. - Bluetooth stack
-
מקבץ ברירת המחדל של Bluetooth מסופק ב-AOSP וממוקם ב-
packages/modules/Bluetooth/system
. המקבץ מיישם את ה-HAL הגנרי של Bluetooth ומתאים אותו אישית באמצעות תוספים ושינויים בהגדרות. - הטמעה של ספק
- מכשירי ספקים מקיימים אינטראקציה עם מחסנית Bluetooth באמצעות שפת הגדרת ממשק HAL (HIDL).
HIDL
HIDL מגדיר את הממשק בין מחסנית Bluetooth לבין ההטמעה של הספק. כדי ליצור את קובצי ה-Bluetooth HIDL, מעבירים את קובצי ממשק ה-Bluetooth לכלי ליצירת HIDL. קבצי הממשק נמצאים בתיקייה
hardware/interfaces/bluetooth
.
פיתוח של Bluetooth stack
מקבץ הפיצ'רים של Bluetooth ב-Android הוא מקבץ פיצ'רים מלא של Bluetooth. רשימת ההסמכות מופיעה באתר של Bluetooth SIG (נדרשת כניסה) בקטע QDID 169365.
מקבץ הפיצ'רים של Bluetooth נמצא ב-
packages/modules/Bluetooth
. הפיתוח מתבצע ב-AOSP, ואנחנו מקבלים בברכה הצעות לשיפורים.