สำหรับอุปกรณ์ที่ใช้ Android 15 ขึ้นไป คุณสามารถ
ใช้การเลือกโดเมน
ระหว่างบริการ IMS กับบริการเดิมผ่านเครือข่ายที่สลับวงจรโดยใช้
API ของระบบ DomainSelectionService
DomainSelectionService
เป็นอินเทอร์เฟซที่กำหนดไว้อย่างดีระหว่างแพลตฟอร์ม Android กับการติดตั้งใช้งานการเลือกโดเมนที่ผู้ให้บริการ
จัดหาให้ อินเทอร์เฟซนี้ช่วยให้การติดตั้งใช้งานของผู้ให้บริการ
ระบุข้อมูลการส่งสัญญาณ เช่น โดเมนที่ใช้โทรออกและส่ง SMS
รวมถึงค่ากำหนดประเภทเครือข่ายในการสแกนเครือข่าย ไปยังแพลตฟอร์ม
รูปที่ 1 แผนภาพสถาปัตยกรรมสำหรับฟีเจอร์การเลือกโดเมน
ตัวอย่างและแหล่งที่มา
Android มีการใช้งานอ้างอิงสำหรับฟีเจอร์การเลือกโดเมนใน
AOSP ที่ TelephonyDomainSelectionService
ดูเอกสารประกอบแบบละเอียดสำหรับ DomainSelectionService
API ได้ที่
DomainSelectionService
และคลาสอื่นๆ ใน API
การใช้งาน
หากต้องการใช้ฟีเจอร์การเลือกโดเมนในอุปกรณ์ Android คุณต้องทำตามขั้นตอนต่อไปนี้
สร้างแอปการเลือกโดเมน ต้องกำหนดบริการในไฟล์
AndroidManifest.xml
เพิ่มการกำหนดค่าในการวางซ้อนอุปกรณ์เพื่อให้แพลตฟอร์มเชื่อมโยงกับการใช้งาน
DomainSelectionService
รองรับอินเทอร์เฟซ 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
อย่างปลอดภัย ให้เพิ่มการกำหนดค่าต่อไปนี้ลงในการวางซ้อนของอุปกรณ์
config_domain_selection_service_component_name
: ชื่อคอมโพเนนต์ (สตริงComponentName
ที่ยุบ) สำหรับบริการDomainSelectionService
เนื่องจาก Android ไม่รองรับแอปที่มีการติดตั้งใช้งานที่ดาวน์โหลดได้ของบุคคลที่สาม
DomainSelectionService
แอปเลือกโดเมนจึงต้องเป็นแอประบบที่อยู่ในโฟลเดอร์ /system_ext/priv-app/
หรือ /product/priv-app/
เฟรมเวิร์กจะตรวจสอบว่าชื่อแพ็กเกจของการติดตั้งใช้งาน
ตรงกับค่าการวางซ้อนของอุปกรณ์หรือไม่ เพื่อให้มั่นใจว่าเฉพาะแอปที่เชื่อถือได้และติดตั้งไว้ล่วงหน้าเท่านั้น
ที่จะเชื่อมโยง
รองรับอินเทอร์เฟซ HAL ของวิทยุ
หากต้องการเปิดใช้ฟีเจอร์การเลือกโดเมน ให้รองรับอินเทอร์เฟซ HAL ของวิทยุที่จำเป็นต่อไปนี้
-
void setEmergencyMode(int serial, EmergencyMode emcModeType); void triggerEmergencyNetworkScan(int serial, EmergencyNetworkScanTrigger request); void cancelEmergencyNetworkScan(int serial, boolean resetScan); void exitEmergencyMode(int serial);
-
void emergencyNetworkScanResult(RadioIndicationType type, EmergencyRegResult result);
การตรวจสอบความถูกต้อง
หากต้องการทดสอบว่าเฟรมเวิร์กโทรศัพท์ตอบสนองต่ออินเทอร์เฟซ
DomainSelectionService
อย่างถูกต้อง ให้เรียกใช้การทดสอบ CTS ใน
DomainSelectionServiceTestOnMockModem