สำหรับอุปกรณ์ที่ใช้ Android 15 ขึ้นไป คุณสามารถ
ใช้การเลือกโดเมน
ระหว่างบริการ IMS กับบริการเดิมผ่านเครือข่ายที่สลับวงจรโดยใช้
API ของระบบ DomainSelectionService DomainSelectionService
เป็นอินเทอร์เฟซที่กำหนดไว้อย่างดีระหว่างแพลตฟอร์ม Android กับการติดตั้งใช้งานการเลือกโดเมนที่ผู้ให้บริการ
จัดหาให้ อินเทอร์เฟซนี้ช่วยให้การติดตั้งใช้งานของผู้ให้บริการ
ระบุข้อมูลการส่งสัญญาณ เช่น โดเมนที่ใช้โทรออกและส่ง SMS
รวมถึงค่ากำหนดประเภทเครือข่ายในการสแกนเครือข่าย ไปยังแพลตฟอร์ม
รูปที่ 1 แผนภาพสถาปัตยกรรมสำหรับฟีเจอร์การเลือกโดเมน
ตัวอย่างและแหล่งที่มา
Android มีการใช้งานอ้างอิงสำหรับฟีเจอร์การเลือกโดเมนใน
โครงการโอเพนซอร์ส Android (AOSP) ที่ TelephonyDomainSelectionService
ดูเอกสารประกอบแบบละเอียดสำหรับ DomainSelectionService API ได้ที่
DomainSelectionService และคลาสอื่นๆ ใน API
การใช้งาน
หากต้องการใช้ฟีเจอร์การเลือกโดเมนในอุปกรณ์ที่ใช้ Android คุณต้องทำตามขั้นตอนต่อไปนี้
สร้างแอปการเลือกโดเมน ต้องกำหนดบริการในไฟล์
AndroidManifest.xmlเพิ่มการกำหนดค่าในการวางซ้อนอุปกรณ์เพื่อให้แพลตฟอร์มเชื่อมโยงกับการใช้งาน
DomainSelectionServiceรองรับอินเทอร์เฟซ Hardware Abstraction Layer (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