שירות לבחירת דומיינים

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

ארכיטקטורת בחירת-דומיין

איור 1. תרשים ארכיטקטורה של התכונה 'בחירת דומיין'

דוגמאות ומקור

מערכת Android מספקת קובץ עזר להטמעת התכונה של בחירת דומיין AOSP בכתובת TelephonyDomainSelectionService. לקבלת מידע מפורט בתיעוד של ממשק ה-API DomainSelectionService, ראו: DomainSelectionService והמחלקות האחרות ב-API.

הטמעה

כדי להטמיע את התכונה של בחירת דומיין במכשיר Android: יש לבצע את השלבים הבאים:

  1. יוצרים אפליקציה לבחירת דומיינים. השירות חייב להיות מוגדר קובץ AndroidManifest.xml.

  2. הוספת הגדרה לשכבת-העל של המכשיר כדי לאפשר לפלטפורמה להתחבר אל הטמעת DomainSelectionService.

  3. תמיכה בממשקי HAL ברדיו הנדרשים לתכונה של בחירת הדומיין.

בקטע הזה מופיעים פרטים נוספים על השלבים האלה.

יש להוסיף ערך שירות בקובץ AndroidManifest.xml

כדי שהאפליקציה לבחירת הדומיין שלך תרשום את השירות DomainSelectionService עם ה-framework, מוסיפים רשומת שירות בקובץ המניפסט באמצעות הפקודה הבאה: פורמט:

<service
     android:name="com.example.domainselection.DomainSelectionService"
     android:directBootAware="true"
     android:persistent="true"
     …
     android:permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
     …
    <intent-filter>
        <action android:name="android.telephony.DomainSelectionService"/>
    </intent-filter>
    …
</service>

הגדרת השירות ב-AndroidManifest.xml חייבת להגדיר את הפרטים הבאים כדי להפעיל את התכונה של בחירת דומיינים.

  • directBootAware="true": מאפשר לגלות את השירות ולהפעיל אותו טלפוניה לפני שהמשתמש מבטל את נעילת המכשיר. לשירות אין גישה אחסון בהצפנה במכשיר לפני שהמשתמש מבטל את נעילת המכשיר. לקבלת מידע נוסף מידע, מידע נוסף זמין במאמרים תמיכה במצב אתחול ישיר והצפנה מבוססת-קבצים.

  • persistent="true": מאפשרת לשירות לפעול באופן עקבי ולא לפעול נהרגו על ידי המערכת כדי לשחזר את הזיכרון. המאפיין הזה פועל רק אם אפליקציה שמיועדת כאפליקציית מערכת.

  • permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE": הבטחה שרק תהליך עם ההרשאה BIND_DOMAIN_SELECTION_SERVICE יכולים להיות מקושרים לאפליקציה. הפעולה הזו מונעת קישור של אפליקציה בעייתית אל השירות, מפני שרק אפליקציות מערכת יכולות לקבל את ההרשאה .

השירות חייב גם לציין את הרכיב intent-filter עם פעולת android.telephony.DomainSelectionService. היא מאפשרת ל-framework למצוא השירות DomainSelectionService.

הגדרת תצורה בשכבת-העל של המכשיר

כדי שהפלטפורמה תהיה מקושרת באופן מאובטח לשירות DomainSelectionService, צריך להוסיף את התצורה הבאה לשכבת-העל של המכשיר:

כי מערכת Android לא תומכת באפליקציות עם אפליקציות שניתנות להורדה על ידי צד שלישי DomainSelectionService הטמעות, האפליקציה לבחירת דומיינים חייבת להיות אפליקציית מערכת שנמצאת ב-/system_ext/priv-app/ או ב-/product/priv-app/ . ה-framework מאמת אם שם החבילה של ההטמעה תואם לערך שכבת-העל במכשיר כדי לוודא שרק אפליקציות מהימנות שהותקנו מראש עובר.

תמיכה בממשקי רדיו עם HAL

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

  • IRadioNetwork

    void setEmergencyMode(int serial, EmergencyMode emcModeType);
    void triggerEmergencyNetworkScan(int serial,
            EmergencyNetworkScanTrigger request);
    void cancelEmergencyNetworkScan(int serial, boolean resetScan);
    void exitEmergencyMode(int serial);
    
  • IRadioNetworkIndication

    void emergencyNetworkScanResult(RadioIndicationType type,
            EmergencyRegResult result);
    

אימות

כדי לבדוק שמסגרת הטלפוניה מגיבה באופן תקין הממשק DomainSelectionService, הרצת בדיקות ה-CTS ב- DomainSelectionServiceTestOnMockModem.