• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 核心服务<a name="ZH-CN_TOPIC_0000001152064913"></a>
2
3-   [简介](#section117mcpsimp)
4-   [目录](#section129mcpsimp)
5-   [约束](#section133mcpsimp)
6-   [接口说明](#section139mcpsimp)
7    -   [SIM卡对外提供的接口](#section142mcpsimp)
8    -   [搜网服务对外提供的接口](#section198mcpsimp)
9
10-   [使用说明](#section370mcpsimp)
11    -   [搜网](#section393mcpsimp)
12    -   [SIM卡](#section402mcpsimp)
13
14-   [相关仓](#section409mcpsimp)
15
16## 简介<a name="section117mcpsimp"></a>
17
18核心服务模块主要功能是初始化SIM卡服务、搜网服务和RIL管理,以及获取RIL Adapter服务。
19
20通过注册回调服务,实现与RIL Adapter进行通信;通过发布订阅,来实现与各功能模块的通信。
21
22**图 1**  核心服务架构图<a name="fig5700192716219"></a>
23
24
25 ![](figures/zh-cn_architecture-of-the-core_service-module.png)
26
27上图示中核心服务关联的业务服务包括SIM卡服务、搜网服务、RIL通信管理。
28
29-   SIM卡服务:主要是SIM卡初始化,文件读写,加载状态通知,单双卡控制,包括SIM卡状态查询、SIM卡管理、SIM卡控制、STK、联系人存储、短信存储。
30-   搜网服务:主要是网络注册,网络状态获取,包括网络注册、网络模式查询、IMS网络状态上报、Radio状态查询、搜网管理、信号强度查询、小区管理、驻网管理、时间时区更新。
31-   RIL管理:提供主动回调服务,查询结果回调服务等。
32
33## 目录<a name="section129mcpsimp"></a>
34
35```sh
36/base/telephony/core_service
37├── figures                       # Readme资源文件
38├── frameworks                    # 框架层目录
39│   ├── js                        # js相关代码
40│   └── native                    # native相关代码
41├── interfaces                    # 接口目录
42│   ├── innerkits                 # 部件间的内部接口
43│   └── kits                      # 对应用提供的接口(例如JS接口)
44├── sa_profile                    # 核心服务的启动文件目录
45├── services                      # 核心服务实现代码目录
46│   ├── core                      # 核心服务的核心文件目录
47│   ├── etc                       # 核心服务的驱动脚本目录
48|   ├── ims_service_interaction   # IMS网络状态上报实现代码目录
49│   ├── network_search            # 搜网服务代码目录
50│   ├── sim                       # SIM卡服务代码目录
51│   └── tel_ril                   # 核心服务与RIL Adapter通信代码目录
52├── test                          # 核心服务测试代码目录
53│   ├── fuzztest                  # 模糊测试相关代码
54│   └── unittest                  # 单元测试相关代码
55└── utils                         # 核心服务工具代码目录
56    ├── common                    # 核心服务通用工具目录
57    ├── log                       # 核心服务日志工具目录
58    └── preferences               # 核心服务属性偏好工具目录
59```
60
61## 约束<a name="section133mcpsimp"></a>
62
63-   开发语言:C++ 、Java Script。
64-   软件约束:需要与以下服务配合使用:HDF(drivers\_interface,drivers\_peripheral),RIL适配(ril\_adapter),状态注册服务(state\_registry)。
65-   硬件约束:需要搭载的设备支持以下硬件:可以进行独立蜂窝通信的Modem以及SIM卡。
66
67## 接口说明<a name="section139mcpsimp"></a>
68
69核心服务模块需要提供SIM卡,搜网相关模块的接口。
70
71###  SIM卡对外提供的接口<a name="section142mcpsimp"></a>
72
73| 接口名称                                                     | 接口描述                                                    | 所需权限                            |
74| ------------------------------------------------------------ | ----------------------------------------------------------- | ----------------------------------- |
75| function getSimState(slotId: number, callback: AsyncCallback\<SimState>): void; | 获取指定卡槽的SIM卡状态                                     | 无                                  |
76| function getSimGid1(slotId: number, callback: AsyncCallback\<string>): void; | 获取指定卡槽SIM卡的GID1(Group Identifier Level 1)           | ohos.permission.GET_TELEPHONY_STATE |
77| function getSimIccId(slotId: number, callback: AsyncCallback\<string>): void; | 获取指定卡槽SIM卡的ICCID(Integrate Circuit Card Identity) | ohos.permission.GET_TELEPHONY_STATE |
78| function getISOCountryCodeForSim(slotId: number, callback: AsyncCallback\<string>): void; | 获取指定卡槽SIM卡的ISO国家码                                | 无                                  |
79| function getSimOperatorNumeric(slotId: number, callback: AsyncCallback\<string>): void; | 获取指定卡槽SIM卡的归属PLMN(Public Land Mobile Network)号 | 无                                  |
80| function getSimSpn(slotId: number, callback: AsyncCallback\<string>): void; | 获取指定卡槽SIM卡的运营商SPN(Service Provider Name)       | 无                                  |
81| function getDefaultVoiceSlotId(callback: AsyncCallback\<number>): void; | 获取语音业务的默认卡卡槽                                    | 无                                  |
82| function getDefaultVoiceSimId(callback: AsyncCallback\<number>): void; | 获取语音业务的默认卡ID                                    | 无                                  |
83| function isSimActive(slotId: number, callback: AsyncCallback\<boolean>): void | 检查指定卡槽的SIM卡是否激活                           | 无 |
84| function hasSimCard(slotId: number, callback: AsyncCallback\<boolean>): void  | 检查SIM卡是否插入指定卡槽                             | 无                                  |
85| function getSimTelephoneNumber(slotId: number, callback: AsyncCallback\<string>): void | 获取指定卡槽SIM卡的MSISDN(Mobile Station Integrated Services Digital Network)|ohos.permission.GET_PHONE_NUMBERS |
86| function getVoiceMailIdentifier(slotId: number, callback: AsyncCallback\<string>): void | 获取指定卡槽SIM卡语音信箱的身份标识 | ohos.permission.GET_TELEPHONY_STATE |
87| function getVoiceMailNumber(slotId: number, callback: AsyncCallback\<string>): void | 获取指定卡槽SIM卡的语音邮箱号码 | ohos.permission.GET_TELEPHONY_STATE |
88| function getCardType(slotId: number, callback: AsyncCallback\<CardType>): void | 获取指定卡槽SIM卡的类型 | 无 |
89| function hasOperatorPrivileges(slotId: number, callback: AsyncCallback\<boolean>): void | 检查应用(调用者)是否已被授予运营商权限 | 无 |
90| function getMaxSimCount(): number | 获取设备上可同时使用的最大SIM卡数,即最大SIM卡槽数。 | 无 |
91
92完整的JS API说明以及实例代码请参考:[SIM卡管理](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-sim.md)93
94### 搜网服务对外提供的接口<a name="section198mcpsimp"></a>
95
96| 接口名称                                                     | 接口描述                      | 所需权限                            |
97| ------------------------------------------------------------ | ----------------------------- | ----------------------------------- |
98| function getRadioTech(slotId: number, callback: AsyncCallback\<{psRadioTech: RadioTechnology, csRadioTech: RadioTechnology}>): void; | 获取指定卡槽的当前接入技术    | ohos.permission.GET_NETWORK_INFO    |
99| function getSignalInformation(slotId: number, callback: AsyncCallback\<Array\<SignalInformation>>): void; | 获取指定卡槽的信号列表        | 无                                  |
100| function getNetworkState(slotId: number, callback: AsyncCallback\<NetworkState>): void; | 获取指定卡槽的网络状态        | ohos.permission.GET_NETWORK_INFO    |
101| function getISOCountryCodeForNetwork(slotId: number, callback: AsyncCallback\<string>): void; | 获取指定卡槽的网络国家码      | 无                                  |
102| function getNetworkSearchInformation(slotId: number, callback: AsyncCallback\<NetworkSearchResult>): void; | 获取指定卡槽的手动搜网结果    | ohos.permission.GET_TELEPHONY_STATE |
103| function getNetworkSelectionMode(slotId: number, callback: AsyncCallback\<NetworkSelectionMode>): void; | 获取指定卡槽的选网模式        | 无                                  |
104| function setNetworkSelectionMode(options: NetworkSelectionModeOptions, callback: AsyncCallback\<void>): void; | 设置指定卡槽的选网模式        | ohos.permission.SET_TELEPHONY_STATE |
105| function isRadioOn(callback: AsyncCallback\<boolean>): void; | 判断主卡Radio是否打开         | ohos.permission.GET_NETWORK_INFO    |
106| function isRadioOn(slotId: number, callback: AsyncCallback\<boolean>): void; | 判断指定卡槽位的Radio是否打开 | ohos.permission.GET_NETWORK_INFO    |
107| function turnOnRadio(callback: AsyncCallback\<void>): void;  | 开启主卡Radio                 | ohos.permission.SET_TELEPHONY_STATE |
108| function turnOnRadio(slotId: number, callback: AsyncCallback\<void>): void; | 开启指定卡槽位的Radio         | ohos.permission.SET_TELEPHONY_STATE |
109| function turnOffRadio(callback: AsyncCallback\<void>): void; | 关闭主卡Radio                 | ohos.permission.SET_TELEPHONY_STATE |
110| function turnOffRadio(slotId: number, callback: AsyncCallback\<void>): void; | 关闭指定卡槽位的Radio         | ohos.permission.SET_TELEPHONY_STATE |
111| function getOperatorName(slotId: number, callback: AsyncCallback\<string>): void; | 获取指定卡槽的运营商名称      | 无                                  |
112| function setPreferredNetwork(slotId: number, networkMode: PreferredNetworkMode, callback: AsyncCallback\<void>): void; | 设置指定卡槽的优选网络模式    | ohos.permission.SET_TELEPHONY_STATE |
113| function getPreferredNetwork(slotId: number, callback: AsyncCallback\<PreferredNetworkMode>): void; | 获取指定卡槽的优选网络模式    | ohos.permission.GET_TELEPHONY_STATE |
114| function getCellInformation(slotId: number, callback: AsyncCallback<Array\<CellInformation>>) | 获取小区信息列表              | ohos.permission.LOCATIONohos.permission.APPROXIMATELY_LOCATION          |
115| function sendUpdateCellLocationRequest(slotId: number, callback: AsyncCallback\<void>) | 请求小区位置                  | ohos.permission.LOCATIONohos.permission.APPROXIMATELY_LOCATION            |
116| function getIMEI(slotId: number, callback: AsyncCallback\<string>) | 获取Imei                      | ohos.permission.GET_TELEPHONY_STATE |
117| function getMEID(slotId: number, callback: AsyncCallback\<string>) | 获取Meid                      | ohos.permission.GET_TELEPHONY_STATE |
118| function getUniqueDeviceId(slotId: number, callback: AsyncCallback\<string>) | 获取设备唯一标识码            | ohos.permission.GET_TELEPHONY_STATE |
119| function getNrOptionMode(slotId: number, callback: AsyncCallback\<NrOptionMode>) | 获取5G模式                    | 无 |
120| function isNrSupported: boolean;                             | 是否支持5g网络                | 无                                  |
121| function getImsRegInfo(slotId: number, imsType: ImsServiceType, callback: AsyncCallback\<ImsRegInfo>): void; | 获取IMS注册测状态信息  | ohos.permission.GET_TELEPHONY_STATE  |
122| function on(type: 'imsRegStateChange', slotId: number, imsType: ImsServiceType, callback: Callback\<ImsRegInfo>): void; | 注册IMS网络状态变化回调  | ohos.permission.GET_TELEPHONY_STATE  |
123| function off(type: 'imsRegStateChange', slotId: number, imsType: ImsServiceType, callback?: Callback\<ImsRegInfo>): void; | 反注册IMS网络状态变化回调   | ohos.permission.GET_TELEPHONY_STATE  |
124
125
126完整的JS API说明以及实例代码请参考:[网络搜索](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-radio.md)127
128**说明:**
129
130>RIL管理不对外暴露接口,由电话服务子系统其他各个模块调用。
131
132## 使用说明<a name="section370mcpsimp"></a>
133
134### 搜网<a name="section393mcpsimp"></a>
135
136获取网络状态接口调用流程及示例代码:
137
1381.  指定查询的slotId,若不指定默认查询主卡信息。
1392.  可以通过callback或者Promise的方式调用getNetworkState方法,返回网络状态信息。
1403.  该接口为异步接口,相关执行结果会从callback中返回。
141
142    ```js
143    import radio from "@ohos.telephony.radio";
144
145    // 参数赋值
146    let slotId = 0;
147
148    // 调用接口【callback方式】
149    radio.getNetworkState(slotId, (err, value) => {
150      if (err) {
151        // 接口调用失败,err非空
152        console.error(`failed to getNetworkState because ${err.message}`);
153        return;
154      }
155      // 接口调用成功,err为空
156      console.log(`success to getNetworkState: ${value}`);
157    });
158
159    // 调用接口【Promise方式】
160    let promise = radio.getNetworkState(slotId);
161    promise.then((value) => {
162      // 接口调用成功,此处可以实现成功场景分支代码。
163      console.log(`success to getNetworkState: ${value}`);
164    }).catch((err) => {
165      // 接口调用失败,此处可以实现失败场景分支代码。
166      console.error(`failed to getNetworkState because ${err.message}`);
167    });
168    ```
169
170
171### SIM卡<a name="section402mcpsimp"></a>
172
173查询指定SIM卡的状态接口调用流程及示例代码:
174
1751.  指定查询的slotId。
1762.  可以通过callback或者Promise的方式调用getSimState方法,返回卡状态信息。
1773.  该接口为异步接口,相关执行结果会从callback中返回。
178
179    ```js
180    import sim from "@ohos.telephony.sim";
181
182    // 参数赋值
183    let slotId = 0;
184
185    // 调用接口【callback方式】
186    sim.getSimState(slotId, (err, value) => {
187      if (err) {
188        // 接口调用失败,err非空
189        console.error(`failed to getSimState because ${err.message}`);
190        return;
191      }
192      // 接口调用成功,err为空
193      console.log(`success to getSimState: ${value}`);
194    });
195
196    // 调用接口【Promise方式】
197    let promise = sim.getSimState(slotId);
198    promise.then((value) => {
199      // 接口调用成功,此处可以实现成功场景分支代码。
200      console.log(`success to getSimState: ${value}`);
201    }).catch((err) => {
202      // 接口调用失败,此处可以实现失败场景分支代码。
203      console.error(`failed to getSimState because ${err.message}`);
204    });
205    ```
206
207
208## 相关仓<a name="section409mcpsimp"></a>
209
210[电话服务子系统](https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/电话服务子系统.md)
211
212**telephony\_core\_service**
213
214[telephony\_sms\_mms](https://gitee.com/openharmony/telephony_sms_mms/blob/master/README_zh.md)
215
216[drivers_interface](https://gitee.com/openharmony/drivers_interface)
217
218[drivers_peripheral](https://gitee.com/openharmony/drivers_peripheral)
219
220[telephony\_ril\_adapter](https://gitee.com/openharmony/telephony_ril_adapter/blob/master/README_zh.md)
221