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

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