תקשורת ברקע

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

יש כמה אפשרויות לתמיכה בכל אחד מהתרחישים לדוגמה האלה. לכל אחת מהן יש יתרונות וחסרונות שעשויים להפוך אותה ליותר או פחות מתאימה לצרכים הספציפיים שלכם.

בתרשים הבא מוצגת תצוגה פשוטה של ההנחיות שבדף הזה:

איתור מכשיר

קודם כל, האפליקציה צריכה למצוא מכשיר להתחברות אליו. כדי למצוא מכשיר BLE, אפשר להשתמש באחת מה-API הבאות:

ברקע

אין הגבלה על השימוש בשני ממשקי ה-API האלה כשהאפליקציה לא גלויה, אבל תהליך האפליקציה צריך לפעול בשני המקרים. אם תהליך האפליקציה לא פועל, תוכלו להשתמש בפתרונות הזמניים הבאים:

התחברות למכשיר

כדי להתחבר למכשיר אחרי שמוצאים אותו, צריך לקבל מכונה של BluetoothDevice למכשיר מאחד מהמקורות הבאים:

אחרי שיוצרים מכונה של BluetoothDevice, אפשר להתחיל בקשת חיבור למכשיר המתאים על ידי קריאה לאחת מהשיטות של connectGatt(). הערך שמעבירים ל-autoConnect בוליאני מגדיר את אחד משני מצבי החיבור הבאים שבהם לקוח ה-GATT משתמש:

  • קישור ישיר (autoconnect = false): ניסיון להתחבר ישירות למכשיר ההיקפי, והכשל אם המכשיר לא זמין. במקרה של ניתוק, לקוח ה-GATT לא מנסה להתחבר מחדש באופן אוטומטי.
  • חיבור אוטומטי (autoconnect = true): המערכת תנסה להתחבר באופן אוטומטי למכשיר ההיקפי בכל פעם שהוא זמין. במקרה של ניתוק ביוזמת הציוד ההיקפי או כי הציוד ההיקפי מחוץ לטווח, לקוח ה-GATT מנסה להתחבר מחדש באופן אוטומטי כשהציוד ההיקפי זמין.

ברקע

אין הגבלה על חיבור למכשיר בזמן שהאפליקציה פועלת ברקע, אבל החיבור נסגר אם התהליך מושבת. בנוסף, יש הגבלות על התחלת פעילויות (ב-Android מגרסה 10 ואילך) או שירותי חזית (ב-Android מגרסה 12 ואילך) מהרקע.

לכן, כדי לבצע חיבור ברקע, אפליקציות יכולות להשתמש בפתרונות הבאים:

איך נשארים מחוברים למכשיר

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

בשני המקרים, האפשרויות הבאות זמינות:

במעבר בין אפליקציות

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

בזמן שמאזינים להתראות מהציוד ההיקפי

כדי להאזין להתראות מהציוד ההיקפי, האפליקציה צריכה לקרוא ל-setCharacteristicNotification(), להאזין להודעות חזרה באמצעות onCharacteristicChanged() ולשמור על החיבור. ברוב האפליקציות, מומלץ לתמוך בתרחיש לדוגמה הזה באמצעות CompanionDeviceService, כי סביר להניח שהאפליקציה תצטרך להמשיך להקשיב במשך תקופות זמן ארוכות. עם זאת, אפשר גם להשתמש בשירות שפועל בחזית.

בכל מקרה, אפשר להתחבר מחדש אחרי שהתהליך הסתיים, לפי ההוראות בקטע חיבור למכשיר.