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

สำหรับอุปกรณ์ที่ใช้ 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