סקירה כללית של Bluetooth

פלטפורמת Android כוללת תמיכה במערך פרוטוקולי Bluetooth, שמאפשר למכשיר להחליף נתונים באופן אלחוטי עם מכשירי Bluetooth אחרים. מסגרת האפליקציה מספקת גישה לפונקציונליות של Bluetooth באמצעות ממשקי Bluetooth API. ממשקי ה-API האלה מאפשרים לאפליקציות להתחבר למכשירי Bluetooth אחרים, וכך להשתמש בתכונות אלחוטיות של נקודה לנקודה ושל נקודות רבות.

באמצעות ממשקי ה-API של Bluetooth, אפליקציה יכולה לבצע את הפעולות הבאות:

  • סורקים כדי למצוא מכשירי Bluetooth אחרים.
  • שאילתה של מתאם ה-Bluetooth המקומי לגבי מכשירי Bluetooth שהותאמו.
  • יצירת ערוצי RFCOMM.
  • מתחברים למכשירים אחרים באמצעות חיפוש שירותים.
  • העברת נתונים למכשירים אחרים וממכשירים אחרים.
  • ניהול של כמה חיבורים.

הנושא הזה מתמקד בBluetooth קלאסי. חיבור Bluetooth קלאסי הוא הבחירה הנכונה לפעולות שצורכות יותר סוללה, כולל סטרימינג ותקשורת בין מכשירים. למכשירי Bluetooth עם דרישות הספק נמוכות, כדאי להשתמש בחיבורי Bluetooth Low Energy.

במסמך הזה מתוארים פרופילים שונים של Bluetooth ומוסבר איך להשתמש בממשקי ה-API של Bluetooth כדי לבצע את ארבע המשימות העיקריות שנדרשות לתקשורת באמצעות Bluetooth:

  • הגדרת Bluetooth.
  • חיפוש מכשירים שמשויכים או זמינים באזור המקומי.
  • חיבור המכשירים.
  • העברת נתונים בין מכשירים.

כדי לראות הדגמה של שימוש בממשקי ה-API של Bluetooth, אפשר לעיין באפליקציית הדוגמה Bluetooth Chat.

העקרונות הבסיסיים

כדי שמכשירים עם Bluetooth יוכלו להעביר נתונים ביניהם, הם צריכים קודם ליצור ערוץ תקשורת באמצעות תהליך התאמה. מכשיר אחד, מכשיר שאפשר לגלות אותו, הופך לזמין לבקשות חיבור נכנסות. מכשיר אחר מוצא את המכשיר שניתן לגילוי באמצעות תהליך גילוי שירותים. אחרי שהמכשיר שניתן לגלות אותו מאשר את בקשת ההתאמה, שני המכשירים משלימים תהליך שבו הם מחליפים מפתחות אבטחה. המכשירים שומרים את המפתחות האלה במטמון לשימוש מאוחר יותר. אחרי שתהליכי ההתאמה והקישור יסתיימו, שני המכשירים יחליפו מידע ביניהם. כשהסשן מסתיים, המכשיר ששלח את בקשת ההתאמה משחרר את הערוץ שקישר אותו למכשיר שאפשר לגלות. עם זאת, שני המכשירים יישארו מקושרים, כך שהם יוכלו להתחבר מחדש באופן אוטומטי במהלך הפעלה עתידית, כל עוד הם נמצאים בטווח אחד של השני ואף אחד מהמכשירים לא הסיר את הקישור.

כדי להשתמש ב-Bluetooth API, צריך להצהיר על כמה הרשאות בקובץ המניפסט. אחרי שהאפליקציה מקבלת הרשאה להשתמש ב-Bluetooth, היא צריכה לגשת אל BluetoothAdapter ולקבוע אם Bluetooth זמין במכשיר. אם Bluetooth זמין, יש שלושה שלבים לחיבור:

במכשירים מסוימים נעשה שימוש בפרופיל Bluetooth ספציפי שמצהיר על הנתונים שהוא מספק.

ממשקי ושיעורי מפתח

כל ממשקי ה-API של Bluetooth זמינים בחבילה android.bluetooth. אלה המחלקות והממשקים שצריך כדי ליצור חיבורי Bluetooth:

BluetoothAdapter
מייצג את מתאם ה-Bluetooth המקומי (רדיו Bluetooth). ‫BluetoothAdapter היא נקודת הכניסה לכל האינטראקציות עם Bluetooth. באמצעות האפשרות הזו, אפשר לגלות מכשירי Bluetooth אחרים, לשלוח שאילתה לגבי רשימה של מכשירים מקושרים (מזווגים), ליצור מופע של BluetoothDevice באמצעות כתובת MAC ידועה וליצור BluetoothServerSocket כדי להאזין לתקשורת ממכשירים אחרים.
BluetoothDevice
מייצג מכשיר Bluetooth מרוחק. אפשר להשתמש בזה כדי לבקש חיבור למכשיר מרוחק דרך BluetoothSocket או כדי לשאול על פרטי המכשיר, כמו השם, הכתובת, הסיווג ומצב הקישור שלו.
BluetoothSocket
מייצג את הממשק לשקע Bluetooth (בדומה ל-TCP Socket). זוהי נקודת החיבור שמאפשרת לאפליקציה להחליף נתונים עם מכשיר Bluetooth אחר באמצעות InputStream ו-OutputStream.
BluetoothServerSocket
מייצג שקע שרת פתוח שמקשיב לבקשות נכנסות (בדומה ל-TCP ServerSocket). כדי לחבר שני מכשירים, מכשיר אחד צריך לפתוח שקע שרת באמצעות המחלקה הזו. כשמכשיר Bluetooth מרוחק שולח בקשת חיבור למכשיר הזה, המכשיר מאשר את החיבור ומחזיר BluetoothSocket מחובר.
BluetoothClass
מתאר את המאפיינים והיכולות הכלליים של מכשיר Bluetooth. זוהי קבוצה לקריאה בלבד של מאפיינים שמגדירה את המחלקות והשירותים של המכשיר. למרות שהמידע הזה מספק רמז שימושי לגבי סוג המכשיר, המאפיינים של הסיווג הזה לא מתארים בהכרח את כל הפרופילים והשירותים של Bluetooth שהמכשיר תומך בהם.
BluetoothProfile
ממשק שמייצג פרופיל Bluetooth. פרופיל Bluetooth הוא מפרט של ממשק אלחוטי לתקשורת מבוססת Bluetooth בין מכשירים. דוגמה לכך היא פרופיל הדיבורית. מידע נוסף על פרופילים זמין במאמר פרופילים של Bluetooth.
BluetoothHeadset
תמיכה באוזניות Bluetooth לשימוש עם טלפונים ניידים. הפרופיל הזה כולל את פרופיל אוזניות ה-Bluetooth ואת פרופיל הדיבורית (גרסה 1.5).
BluetoothA2dp
הפרופיל מגדיר איך אפשר להזרים אודיו באיכות גבוהה ממכשיר אחד למכשיר אחר באמצעות חיבור Bluetooth, באמצעות פרופיל מתקדם להפצת אודיו (A2DP).
BluetoothHealth
מייצג פרופיל של מכשיר בריאות (Health Device Profile) ששולט בשירות Bluetooth.
BluetoothHealthCallback
מחלקה מופשטת שמשמשת להטמעה של קריאות חוזרות (callbacks) מסוג BluetoothHealth. חובה להרחיב את המחלקה הזו ולהטמיע את שיטות הקריאה החוזרת כדי לקבל עדכונים לגבי שינויים במצב הרישום של האפליקציה ובמצב של ערוץ ה-Bluetooth.
BluetoothHealthAppConfiguration
מייצג הגדרת אפליקציה שאפליקציית צד שלישי של Bluetooth Health נרשמת אליה כדי לתקשר עם מכשיר Bluetooth Health מרוחק.
BluetoothProfile.ServiceListener
ממשק שמיידע לקוחות של BluetoothProfile תקשורת בין תהליכים (IPC) כשהם מחוברים לשירות הפנימי שמפעיל פרופיל מסוים או מנותקים ממנו.