Android מספקת תמיכה מובנית בפלטפורמה ל-Bluetooth עם צריכת אנרגיה נמוכה (BLE) בתפקיד המרכזי, ומספקת ממשקי API שבהם אפליקציות יכולות להשתמש כדי לזהות מכשירים, לבצע שאילתות לשירותים ולהעביר מידע.
תרחישים נפוצים לדוגמה:
- העברת כמויות קטנות של נתונים בין מכשירים קרובים.
- אינטראקציה עם חיישני קירבה כדי לספק למשתמשים חוויה מותאמת אישית על סמך המיקום הנוכחי שלהם.
בניגוד ל-Bluetooth קלאסי, BLE תוכנן לצריכת אנרגיה נמוכה משמעותית. כך האפליקציות יכולות לתקשר עם מכשירי BLE שיש להם דרישות צריכת אנרגיה מחמירות יותר, כמו חיישני קרבה, מכשירי ניטור קצב הלב ומכשירי כושר.
זהירות: כשמשתמש מתאים את המכשיר שלו למכשיר אחר באמצעות BLE, הנתונים שמועברים בין שני המכשירים נגישים לכל האפליקציות במכשיר של המשתמש.
לכן, אם האפליקציה מתעדת מידע אישי רגיש, צריך להטמיע אבטחה בשכבת האפליקציה כדי להגן על הפרטיות של המידע הזה.
העקרונות הבסיסיים
כדי שמכשירים עם תמיכה ב-BLE יוכלו להעביר נתונים ביניהם, הם צריכים קודם ליצור ערוץ תקשורת. כדי להשתמש בממשקי ה-API של Bluetooth LE, צריך להצהיר על כמה הרשאות בקובץ המניפסט. אחרי שהאפליקציה מקבלת הרשאה להשתמש ב-Bluetooth, היא צריכה לגשת ל-BluetoothAdapter
ולקבוע אם ה-Bluetooth זמין במכשיר. אם ה-Bluetooth זמין, המכשיר יסורק אחר מכשירי BLE בקרבת מקום.
אחרי שמוצאים מכשיר, מאתרים את היכולות של מכשיר ה-BLE על ידי התחברות לשרת ה-GATT במכשיר ה-BLE.
אחרי שתתחברו, תוכלו להעביר נתונים באמצעות המכשיר המחובר בהתאם לשירותים ולמאפיינים הזמינים.
מונחים ומושגים מרכזיים
בטבלה הבאה ריכזנו את המונחים והמושגים העיקריים ב-BLE:
- פרופיל מאפיינים גנרי (GATT)
- פרופיל ה-GATT הוא מפרט כללי לשליחה ולקבלה של קטעי נתונים קצרים שנקראים 'מאפיינים' דרך קישור BLE. כל הפרופילים הנוכחיים של אפליקציות BLE מבוססים על GATT. למידע נוסף, אפשר לעיין בקוד לדוגמה של Android BluetoothLeGatt ב-GitHub.
- פרופילים
- ה-Bluetooth SIG מגדיר הרבה פרופילים למכשירי BLE. פרופיל הוא מפרט של אופן הפעולה של מכשיר באפליקציה מסוימת. חשוב לזכור שאפשר להטמיע במכשיר יותר מפרופיל אחד. לדוגמה, מכשיר יכול להכיל מוניטור דופק וגלאי של רמת הטעינה של הסוללה.
- Attribute Protocol (ATT)
- פרוטוקול GATT מבוסס על פרוטוקול המאפיינים (ATT). הפרוטוקול הזה נקרא גם GATT/ATT. מדיניות ATT עברה אופטימיזציה לפעול במכשירי BLE. לשם כך, הוא משתמש בכמה שפחות בייטים. לכל מאפיין יש מזהה ייחודי (UUID) – פורמט סטנדרטי של מחרוזת מזהה באורך 128 ביט, המשמש לזיהוי ייחודי של מידע. המאפיינים שמועברים על ידי ATT מפורטים בתור מאפיינים ושירותים.
- מאפיין
- מאפיין מכיל ערך יחיד ומספר תיאורים (0 עד n) שמתארים את הערך של המאפיין. אפשר לחשוב על מאפיין בתור טיפוס, בדומה לכיתה.
- תיאור
- תיאורים הם מאפיינים מוגדרים שמתארים ערך מאפיין. לדוגמה, מתאר יכול לציין תיאור שקריא לבני אדם, טווח מקובל לערך של מאפיין או יחידת מידה ספציפית לערך של מאפיין.
- שירות
- שירות הוא אוסף של מאפיינים. לדוגמה, יכול להיות לכם שירות שנקרא 'מכשיר למדידת דופק' שכולל מאפיינים כמו 'מדידת דופק'. בכתובת bluetooth.org תוכלו למצוא רשימה של פרופילים ושירותים קיימים מבוססי GATT.
תפקידים ותחומי אחריות
כשמכשיר מקיים אינטראקציה עם מכשיר BLE, התפקידים והאחריות מתחלקים בשתי דרכים שונות:
מרכזי לעומת היקפי. זה רלוונטי לחיבור BLE עצמו – המכשיר בתפקיד המרכזי סורק ומחפש מודעות, והמכשיר בתפקיד ההיקפי מפרסם. שני מכשירים שתומכים רק בתפקיד ההיקפי לא יכולים לתקשר ביניהם, וגם שני מכשירים שתומכים רק בתפקיד המרכזי לא יכולים לתקשר ביניהם.
שרת GATT לעומת לקוח GATT הוא קובע איך שני המכשירים יתקשרו זה עם זה אחרי שהחיבור יתבצע. המכשיר בתפקיד הלקוח שולח בקשות לנתונים, והמכשיר בתפקיד השרת ממלא אותן.
כדי להבין את ההבדל בין חלוקת התפקידים 'מרכזי-פריפריאלי' לבין 'שרת-לקוח', נבחן דוגמה שבה יש לכם טלפון Android ומכשיר למעקב אחר פעילות עם תמיכה ב-BLE שמדווח על נתוני החיישן חזרה לטלפון.
הטלפון, שהוא המכשיר המרכז, סורק באופן פעיל מכשירי BLE. מכשיר מעקב הפעילות – הציוד ההיקפי – מפרסם את עצמו וממתין לקבלת בקשה להתחברות.
אחרי שנוצר חיבור בין הטלפון לבין המעקב אחר הפעילות, הם מתחילים להעביר מטא-נתונים של GATT זה לזה. במקרה כזה, האפליקציה שפועלת בטלפון שולחת בקשות לנתונים, כך שהיא פועלת בתור לקוח GATT. מכשיר מעקב הפעילות ממלא את הבקשות האלה, ולכן הוא פועל בתור שרת GATT.
עיצוב חלופי של האפליקציה עשוי לכלול במקום זאת את התפקיד של שרת GATT בטלפון. מידע נוסף זמין במאמר BluetoothGattServer
.