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