Модуль реестра состояния предоставляет API для регистрации и отмены регистрации наблюдателя, который слушает различные обратные события подсистемы телефонии. Такие события включают, но не ограничиваются следующими: изменения состояния сети, изменения уровня сигнала, изменения информации о ячейках, изменения состояния соединения данных сотовой связи и изменения состояния вызова.
Рисунок 1 Архитектура модуля реестра состояния
/base/telephony/state_registry # Сервис реестра состояния
├─ figures # Изображения README файлов
├─ frameworks # Уровень фреймворка
│ ├─ js # Код на JavaScript
│ └─ native # Нативный код
├─ interfaces # API
│ ├─ innerkits # Внутренние API
│ └─ kits # Внешние API (например, JS API)
├─ sa_profile # Профиль SA
├─ services # Код сервиса
└─ test # Тестовый код
├─ mock # Симуляционный тест
└─ unittest # Единичный тест
Таблица 1 API регистрации
API | Описание |
---|---|
function on(type: String, options: { slotId?: number }, callback: AsyncCallback): void; | Регистрирует наблюдатель. |
function off(type: String, callback?: AsyncCallback): void; | Отменяет регистрацию наблюдателя. |
Различные события подписки различаются параметром type. В следующей таблице приведены связанные параметры type.
Таблица 2 Описание параметров типа
| Параметр | Описание | Требуемые права | | --------------------------------- | ------------------------------------------------------------ | ----------------------------- | | networkStateChange | Событие изменения состояния сети | ohos.permission.GET_NETWORK_INFO | | signalInfoChange | Событие изменения сигнала | Нет | | cellInfoChange | Событие изменения информации о ячейках | ohos.permission.LOCATION и ohos.permission.APPROXIMATELY_LOCATION | | cellularDataConnectionStateChange | Событие изменения состояния соединения данных сотовой связи | Нет | | cellularDataFlowChange | Событие изменения потока данных сотовой связи | Нет | | callStateChange | Событие изменения состояния звонка, в котором значение параметра phoneNumber пустое, если у пользователя нет требуемых прав доступа. | ohos.permission.READ_CALL_LOG | | simStateChange | Событие изменения состояния карты SIM | Нет |### Пример кода
Функционал регистрации наблюдателя для событий изменения состояния звонков используется как пример. Процесс состоит из следующих шагов:
// Импортируем пакет наблюдателя. import observer from '@ohos.telephony.observer';
// Регистрируем наблюдателя.
observer.on('callStateChange', {slotId: 1}, (err, value) => {
if (err) {
// Если вызов API завершился ошибкой, err не является пустым.
console.error(Ошибка, поскольку ${err.message}
);
return;
}
// Если вызов API прошел успешно, err является пустым.
console.log(Успешно включен. Номер -
+ value.number + ", состояние - " + value.state);
});
// Отменяем регистрацию наблюдателя.
observer.off('callStateChange', (err, value) => {
if (err) {
// Если вызов API завершился ошибкой, err не является пустым.
console.error(Ошибка, поскольку ${err.message}
);
return;
}
// Если вызов API прошел успешно, err является пустым.
console.log(Успешно отключен
);
});
```## Вовлечённые репозитории<a name="section206mcpsimp"></a>
[Telephony](https://gitee.com/openharmony/docs/blob/master/en/readme/telephony.md)
**telephony_state_registry**
[telephony_core_service](https://gitee.com/openharmony/telephony_core_service/blob/master/README.md)
[telephony_cellular_data](https://gitee.com/openharmony/telephony_cellular_data/blob/master/README.md)
[telephony_cellular_call](https://gitee.com/openharmony/telephony_cellular_call/blob/master/README.md)
[telephony_call_manager](https://gitee.com/openharmony/telephony_call_manager/blob/master/README.md)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )