Android 9 מספק ממשקי API לתמיכה טובה יותר באפליקציות של צד שלישי לביצוע שיחות. אפליקציות שיחות של צד שלישי מסתמכות בדרך כלל על ממשקי Telephony API, כמו PHONE_STATE
שידור כדי להתקיים לצד שיחות טלפון של ספקי סלולר. כתוצאה מכך, אפליקציות של צד שלישי לביצוע שיחות חייבות לתת עדיפות לשיחות דרך הספק הסלולרי, ולעתים קרובות הן דוחות בשקט שיחות נכנסות באפליקציה או מסיימות שיחה פעילה כדי לפנות מקום לשיחה דרך הספק הסלולרי.
ממשקי ה-API ב-Android 9 תומכים בתרחישי שיחות בו-זמניות בין אפליקציות של צד שלישי לבין שיחות של ספקי סלולר. לדוגמה, תוכלו לקבל שיחה נכנסת מצד שלישי בזמן שאתם מנהלים שיחה עם ספק הסלולר. המסגרת אחראית לוודא שהשיחה עם הספק תהיה בהמתנה כשהמשתמש יתחיל את השיחה עם הצד השלישי.
ב-Android 9, מומלץ לאפליקציות צד שלישי לביצוע שיחות להטמיע את ה-API ConnectionService
שמנוהל באופן עצמאי. מידע נוסף על בניית אפליקציה לביצוע שיחות באמצעות ה-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/
.
כדי ליצור את אפליקציית הבדיקה מהשורש של מאגר קוד המקור של Android, משתמשים בפקודה:
mmma packages/services/Telecomm/testapps/
מתקינים את ה-APK של הגרסה באמצעות
adb install -g -r <apk path>
. סמל של דוגמה בניהול עצמי יתווסף למרכז האפליקציות.מקישים על הסמל כדי לפתוח את אפליקציית הבדיקה.
איך מטפלים בשיחות נכנסות שמנתקות שיחות פעילות
כדי לוודא ששיחה נכנסת מנתקת שיחה פעילה עם צד שלישי, פועלים לפי השלבים הבאים.
איור 3. בדיקת האפליקציה באמצעות הטמעות לדוגמה של ConnectionService API.
- מבטלים את הסימון של האפשרות Holdable (ניתן להשהיה).
- מקישים על יוצאת כדי להתחיל שיחה יוצאת לדוגמה.
- מקישים על הכפתור פעיל כדי שהשיחה תהיה פעילה.
- מתקשרים למספר הטלפון של המכשיר שנבדק באמצעות טלפון אחר. הפעולה הזו תפעיל את התרחיש שבו לחייגן שלכם יסופק שם של אפליקציה, והשיחה אליה תנותק.
- כשמסיימים, מקישים על הלחצן התנתקות באפליקציית הבדיקה.
רשומות ביומן השיחות מאפליקציות שיחות של צד שלישי
אחרי שמבצעים את השלבים שלמעלה, אפליקציית הבדיקה אמורה לרשום ביומן קריאה ליומן של קריאות המערכת. כדי לוודא שהמכשיר מתעד שיחות מאפליקציות של צד שלישי לביצוע שיחות, פותחים את אפליקציית החייגן ומוודאים שהשיחה מופיעה ביומן השיחות של המערכת.