ב-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), חשוב לוודא שהחייגן או אפליקציית הטלפון מציגים את הרשומות האלה ביומן השיחות ומציגים את השם של אפליקציית החייגן של הצד השלישי, שבה מופיעה אפליקציית השיחות של הצד השלישי שממנה נשלחה אפליקציית החייגן של צד שלישי (אם מופיעה רשימה עם המקור של אפליקציית השיחות לדוגמה של מערכת ההפעלה (CDD) (סעיף 7.4.1.2).
האפליקציות אחראיות להגדיר את
CAPABILITY_SUPPORT_HOLD
ו-CAPABILITY_HOLD
בחיבורים של האפליקציות שלהן. אבל, יכול להיות שבאפליקציה לא תהיה אפשרות לנהל שיחות בנסיבות מסוימות. המסגרת כוללת הוראות לפתרון בקשות מהסוג הזה.
תרחישים
עליכם לשנות את אפליקציית החיוג כדי לטפל בתרחישים הבאים.
טיפול בשיחות נכנסות שמנתקות שיחה פעילה
בתרחיש שבו מתבצעת שיחה עם צד שלישי (למשל, שיחה ב-SuperCaller) שלא תומכת בהשהיה, והמשתמש מקבל שיחה בנייד (למשל, באמצעות ספק FooCom), באפליקציית Dialer או באפליקציית Phone אמורה להופיע הודעה למשתמש על כך שהשיחה בנייד תסתיים אם יענה לשיחה ברשת הסלולרית.
חוויית המשתמש הזו חשובה, כי אפליקציית שיחות של צד שלישי עשויה לקיים שיחה פעילה ש-framework לא יכול להחזיק. מענה לשיחה חדשה בנייד גורם לניתוק השיחה הנוכחית עם הצד השלישי.
דוגמה לממשק המשתמש מוצגת באיור:
איור 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 באפליקציית הבדיקה.
רשומות ביומן השיחות מאפליקציות של צד שלישי לשיחות
אחרי שתבצעו את השלבים שלמעלה, אמורה להופיע ביומן הקריאות של המערכת של אפליקציית הבדיקה קריאה. כדי לוודא שהמכשיר מתעד שיחות מאפליקציות צד שלישי, פותחים את אפליקציית החיוג ומעיינים ביומן השיחות של המערכת כדי לוודא שהשיחה מופיעה בו.