บริการเลือกโดเมน

สำหรับอุปกรณ์ที่ใช้ Android 15 ขึ้นไป คุณสามารถ ใช้การเลือกโดเมน ระหว่างบริการ IMS กับบริการเดิมผ่านเครือข่ายที่สลับวงจรโดยใช้ API ของระบบ DomainSelectionService DomainSelectionService เป็นอินเทอร์เฟซที่กำหนดไว้อย่างดีระหว่างแพลตฟอร์ม Android กับการติดตั้งใช้งานการเลือกโดเมนที่ผู้ให้บริการ จัดหาให้ อินเทอร์เฟซนี้ช่วยให้การติดตั้งใช้งานของผู้ให้บริการ ระบุข้อมูลการส่งสัญญาณ เช่น โดเมนที่ใช้โทรออกและส่ง SMS รวมถึงค่ากำหนดประเภทเครือข่ายในการสแกนเครือข่าย ไปยังแพลตฟอร์ม

domain-selection-architecture

รูปที่ 1 แผนภาพสถาปัตยกรรมสำหรับฟีเจอร์การเลือกโดเมน

ตัวอย่างและแหล่งที่มา

Android มีการใช้งานอ้างอิงสำหรับฟีเจอร์การเลือกโดเมนใน AOSP ที่ TelephonyDomainSelectionService ดูเอกสารประกอบแบบละเอียดสำหรับ DomainSelectionService API ได้ที่ DomainSelectionService และคลาสอื่นๆ ใน API

การใช้งาน

หากต้องการใช้ฟีเจอร์การเลือกโดเมนในอุปกรณ์ Android คุณต้องทำตามขั้นตอนต่อไปนี้

  1. สร้างแอปการเลือกโดเมน ต้องกำหนดบริการในไฟล์ AndroidManifest.xml

  2. เพิ่มการกำหนดค่าในการวางซ้อนอุปกรณ์เพื่อให้แพลตฟอร์มเชื่อมโยงกับการใช้งาน DomainSelectionService

  3. รองรับอินเทอร์เฟซ HAL ของวิทยุที่จำเป็นสำหรับฟีเจอร์การเลือกโดเมน

ส่วนนี้จะให้รายละเอียดเพิ่มเติมเกี่ยวกับขั้นตอนเหล่านี้

เพิ่มรายการบริการใน AndroidManifest.xml

หากต้องการให้แอปเลือกโดเมนลงทะเบียนบริการ DomainSelectionService กับเฟรมเวิร์ก ให้เพิ่มรายการบริการในไฟล์ Manifest โดยใช้รูปแบบต่อไปนี้

<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 ซึ่งจะช่วยให้เฟรมเวิร์กค้นหาDomainSelectionServiceบริการได้

กำหนดการกำหนดค่าในการวางซ้อนอุปกรณ์

หากต้องการให้แพลตฟอร์มเชื่อมโยงกับบริการ DomainSelectionService อย่างปลอดภัย ให้เพิ่มการกำหนดค่าต่อไปนี้ลงในการวางซ้อนของอุปกรณ์

เนื่องจาก Android ไม่รองรับแอปที่มีการติดตั้งใช้งานที่ดาวน์โหลดได้ของบุคคลที่สาม DomainSelectionService แอปเลือกโดเมนจึงต้องเป็นแอประบบที่อยู่ในโฟลเดอร์ /system_ext/priv-app/ หรือ /product/priv-app/ เฟรมเวิร์กจะตรวจสอบว่าชื่อแพ็กเกจของการติดตั้งใช้งาน ตรงกับค่าการวางซ้อนของอุปกรณ์หรือไม่ เพื่อให้มั่นใจว่าเฉพาะแอปที่เชื่อถือได้และติดตั้งไว้ล่วงหน้าเท่านั้น ที่จะเชื่อมโยง

รองรับอินเทอร์เฟซ 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