ב-Android 9 יש ממשקי API לתמיכה טובה יותר באפליקציות לשיחות של צד שלישי. אפליקציות לשיחות של צד שלישי מסתמכות בדרך כלל על ממשקי Telephony API, כמו השידור PHONE_STATE
, כדי להתקיים לצד שיחות טלפון של ספק. כתוצאה מכך, אפליקציות צד שלישי לשיחות חייבות לתת עדיפות לשיחות מהספק הסלולרי, ולעיתים קרובות הן נאלצות לדחות בשקט שיחות נכנסות באפליקציה או לסיים שיחה מתמשכת כדי לפנות מקום לשיחה מהספק הסלולרי.
ממשקי ה-API ב-Android 9 תומכים בתרחישי שיחה בו-זמנית בין אפליקציות צד שלישי לשיחות של ספק הסלולר. כך, לדוגמה, תוכלו לקבל שיחה נכנסת מצד שלישי בזמן שיחה עם ספק. המסגרת אחראית לוודא שהשיחה עם הספק מושהית כשהמשתמש מעורב בשיחה עם הצד השלישי.
ב-Android 9, מומלץ לאפליקציות לשיחות של צד שלישי להטמיע את ConnectionService
API בניהול עצמי. למידע נוסף על פיתוח אפליקציית שיחות באמצעות ה-API הזה, ראו פיתוח אפליקציית שיחות.
ה-API המנוהל באופן עצמאי של ConnectionService
גם מאפשר למפתחים להביע הסכמה לכך שהשיחות באפליקציה שלהם יתועדו ביומן השיחות של המערכת (מידע נוסף זמין במאמר EXTRA_LOG_SELF_MANAGED_CALLS
). בהתאם לדרישות שמפורטות במסמך ההגדרה של תאימות ל-Android (CDD) (קטע 7.4.1.2), עליכם לוודא שבאפליקציית החיוג או באפליקציית הטלפון מוצגות הרשומות האלה ביומן השיחות, ומוצג גם שם אפליקציית החיוג של הצד השלישי שממנה התבצעה השיחה (לדוגמה של אופן האופן שבו אפליקציית החיוג של AOSP עומדת בדרישות האלה, ראו רשומות ביומן השיחות מאפליקציות של צד שלישי).
האפליקציות אחראיות להגדרת CAPABILITY_SUPPORT_HOLD
ו-CAPABILITY_HOLD
בחיבורים שלהן. עם זאת, יכול להיות שבמקרים מסוימים האפליקציה לא תוכל להשהות שיחה. המסגרת כוללת הוראות לפתרון בקשות מהסוג הזה.
תרחישים
עליכם לשנות את אפליקציית החיוג כדי לטפל בתרחישים הבאים.
טיפול בשיחות נכנסות שמנתקות שיחה פעילה
בתרחיש שבו מתקיימת שיחה עם צד שלישי (למשל, שיחה ב-SuperCaller) שלא תומכת בהשהיה, והמשתמש מקבל שיחה בנייד (למשל, באמצעות ספק FooCom), באפליקציית Dialer או באפליקציית Phone אמורה להופיע הודעה למשתמש על כך שהשיחה בנייד תסתיים אם יענה לשיחה ברשת הסלולרית.
חוויית המשתמש הזו חשובה כי יכול להיות שאפליקציית שיחות של צד שלישי תהיה בשיחת חירום מתמשכת שלא ניתן להשהות אותה באמצעות המסגרת. מענה לשיחה חדשה בנייד גורם לניתוק השיחה הנוכחית עם הצד השלישי.
דוגמה לממשק המשתמש מוצגת באיור:
איור 1. שיחה נכנסת שמנתקת שיחה פעילה עם צד שלישי.
באפליקציית החיוג אפשר לבדוק אם שיחה נכנסת גורמת לניתוק של שיחה אחרת, על ידי בדיקת האפשרויות הנוספות לשיחות.
חשוב לוודא שהערך של EXTRA_ANSWERING_DROPS_FG_CALL
הוא TRUE
, ושהערך של EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME
הוא שם האפליקציה שהשיחה שלה תופסק כשתענו לשיחה הנכנסת בנייד.
רשומות ביומן השיחות מאפליקציות צד שלישי לשיחות
מפתחים של אפליקציות צד שלישי לשיחות יכולים לבחור שהשיחות באפליקציה שלהם יתועדו ביומן השיחות של המערכת (ראו EXTRA_LOG_SELF_MANAGED_CALLS
). כלומר, יכול להיות שיופיעו ביומן השיחות רשומות שלא קשורות לשיחות ברשת הסלולרית.
כשבאפליקציית החיוג של AOSP מוצגות רשומות ביומן השיחות שקשורות לאפליקציית שיחות של צד שלישי, שם האפליקציה שבה התקיימה השיחה מוצג ביומן השיחות, כפי שמוצג באיור:
איור 2. רשומה ביומן השיחות עם שם של אפליקציית צד שלישי לשיחות באפליקציית החיוג.
כדי לקבוע את שם האפליקציה שמשויכת לרשומה ביומן השיחות, משתמשים בעמודות PHONE_ACCOUNT_COMPONENT_NAME
ו-PHONE_ACCOUNT_ID
בספק של יומן השיחות כדי ליצור מכונה של PhoneAccountHandle
, שמזהה את המקור של רשומה ביומן השיחות. שולחים שאילתה ל-TelecomManager
כדי לקבל את הפרטים של PhoneAccount.
כדי לקבוע אם רשומה ביומן השיחות היא מאפליקציית צד שלישי לשיחות, בודקים את היכולות של PhoneAccount
כדי לראות אם ההגדרה CAPABILITY_SELF_MANAGED
מוגדרת.
השיטה getLabel
של PhoneAccount
המוחזר מחזירה את שם האפליקציה שמשויכת לרשומה ביומן השיחות מאפליקציית השיחות של הצד השלישי.
אימות
כדי לבדוק אם המכשיר תומך באפליקציות צד שלישי לשיחות, משתמשים באפליקציית הבדיקה של Telecomm, שמטמיעה את ConnectionService API בניהול עצמי. האפליקציה נמצאת בתיקייה /packages/services/Telecomm/testapps/
.
פותחים את אפליקציית הבדיקה מהשורש של מאגר המקור של Android באמצעות:
mmma packages/services/Telecomm/testapps/
מתקינים את קובץ ה-APK של ה-build באמצעות
adb install -g -r <apk path>
. לאחר מכן, הסמל של דוגמה לניהול עצמי יתווסף למרכז האפליקציות.מקישים על הסמל כדי לפתוח את אפליקציית הבדיקה.
טיפול בשיחות נכנסות שמנתקות שיחה פעילה
כדי לוודא ששיחה נכנסת מנתקת שיחה מתמשכת עם צד שלישי, פועלים לפי השלבים הבאים.
איור 3. בדיקת אפליקציה עם הטמעות לדוגמה של ConnectionService API.
- מבטלים את הסימון של האפשרות Holdable.
- מקישים על יוצאת כדי להתחיל שיחה יוצאת לדוגמה.
- מקישים על הלחצן פעיל כדי להפעיל את השיחה.
- מתקשרים למספר הטלפון של המכשיר שנבדק באמצעות טלפון אחר. כך מתרחש התרחיש שבו מערכת החיוג מקבלת את שם האפליקציה, והשיחה באפליקציה הזו תופסק.
- כשמסיימים, מקישים על הלחצן DISCONNECT באפליקציית הבדיקה.
רשומות ביומן השיחות מאפליקציות צד שלישי לשיחות
אחרי שתבצעו את השלבים שלמעלה, אמורה להופיע ביומן הקריאות של המערכת של אפליקציית הבדיקה קריאה. כדי לוודא שהמכשיר מתעד שיחות מאפליקציות צד שלישי, פותחים את אפליקציית החיוג ומעיינים ביומן השיחות של המערכת כדי לוודא שהשיחה מופיעה בו.