תמיכה באפליקציות צד שלישי לשיחות

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

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

ב-Android 9, מומלץ לאפליקציות שיחות של צד שלישי להטמיע את ConnectionService API לניהול עצמי. מידע נוסף על בניית אפליקציה לביצוע שיחות באמצעות ה-API הזה זמין במאמר בניית אפליקציה לביצוע שיחות.

ממשק ה-API לניהול עצמי ConnectionService מאפשר למפתחים להביע הסכמה לרישום של שיחות באפליקציה שלהם ביומן השיחות של המערכת (ראו EXTRA_LOG_SELF_MANAGED_CALLS). בהתאם לדרישות במסמך הגדרת התאימות (CDD) של Android (סעיף 7.4.1.2), עליכם לוודא שאפליקציית החייגן או הטלפון שלכם מציגה את הרשומות האלה ביומן השיחות, ומציגה את השם של אפליקציית השיחות של הצד השלישי שממנה בוצעה השיחה (לדוגמה של אופן העמידה בדרישה הזו באפליקציית החייגן של AOSP, ראו רשומות ביומן השיחות מאפליקציות שיחות של צד שלישי).

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

תרחישים

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

איך מטפלים בשיחות נכנסות שמנתקות שיחות פעילות

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

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

דוגמה בממשק המשתמש מוצגת באיור:

שיחה נכנסת מנתקת שיחה פעילה עם צד שלישי

איור 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/.

  1. כדי ליצור את אפליקציית הבדיקה מהשורש של מאגר קוד המקור של Android, משתמשים בפקודה:

    mmma packages/services/Telecomm/testapps/

  2. מתקינים את קובץ ה-APK של הגרסה באמצעות adb install -g -r <apk path>. סמל של דוגמה בניהול עצמי יתווסף למרכז האפליקציות.

  3. מקישים על הסמל כדי לפתוח את אפליקציית הבדיקה.

איך מטפלים בשיחות נכנסות שמנתקות שיחות פעילות

כדי לוודא ששיחה נכנסת מנתקת שיחה פעילה עם צד שלישי, פועלים לפי השלבים הבאים.

אפליקציית בדיקה לאפליקציות של צד שלישי לביצוע שיחות

איור 3. בדיקת האפליקציה באמצעות הטמעות לדוגמה של ConnectionService API.

  1. מבטלים את הסימון של האפשרות Holdable (ניתן להשהיה).
  2. מקישים על יוצאת כדי להתחיל שיחה יוצאת לדוגמה.
  3. מקישים על הלחצן פעיל כדי שהשיחה תהיה פעילה.
  4. מתקשרים למספר הטלפון של המכשיר שנבדק באמצעות טלפון אחר. הפעולה הזו תפעיל את התרחיש שבו החייגן מקבל את שם האפליקציה, והשיחה אליה תנותק.
  5. כשמסיימים, מקישים על הלחצן התנתקות באפליקציית הבדיקה.

רשומות ביומן השיחות מאפליקציות של צד שלישי לביצוע שיחות

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