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