Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
GNSS_GEOFENCE_STATE перечисляет различные состояния одной геозоны.
Синтаксис
typedef enum {
GNSS_GeofenceState_Unknown,
GNSS_GeofenceState_Entered,
GNSS_GeofenceState_Exited
} GNSS_GEOFENCE_STATE;
Константы
GNSS_GeofenceState_Unknown Состояние геозоны неизвестно. |
GNSS_GeofenceState_Entered Введена геозона. |
GNSS_GeofenceState_Exited Геозона была завершена. |
Замечания
Следующие битовые маски используются HLOS для запроса оповещений об изменении состояния для геозон:
#define GNSS_GEOFENCEALERTTYPE_ENTRY GNSS_GeofenceState_Entered // Enter Geofence
#define GNSS_GEOFENCEALERTTYPE_EXIT GNSS_GeofenceState_Exited // Exit Geofence
Оповещение о входе возникает, когда предыдущее состояние геозоны было неизвестно или завершено, и устройство ввело геозону.
Оповещение о выходе возникает при вводе предыдущего состояния геозоны, и устройство теперь завершило геозону. Если предыдущее состояние геозоны было неизвестным, и устройство в настоящее время находится за пределами геозоны, не будет создано оповещение о выходе.
Платформа расположения отправляет триггер выхода только приложениям, когда предыдущее известное состояние забора находится внутри забора. Это решение по проектированию, чтобы избежать общения событий выхода в конфигурации геозоны (например, если пользователь не ожидает, что пользователь настраивает ограждение выхода из дома, необходимо уведомить о том, что они находятся вне дома, если они настраивают уведомление, когда они уже находятся за пределами дома). Тем не менее платформа расположения может обрабатывать, где драйвер GNSS отправляет события выхода, но не рекомендуется, так как взаимодействие между адаптером GNSS и драйвером GNSS станет очень подробным. Учитывая, что вероятность входа пользователя в геозону гораздо меньше, чем пользователь за пределами геозон, это поведение сокращает требуемое взаимодействие между драйвером GNSS и адаптером GNSS. Например, в случае с 100 геозонами, отправленными в драйвер GNSS, и пользователь был вне всех из них, без этого поведения потребуется отправить уведомления о выходе из адаптера GNSS 100. Вероятность того, что что-то подобное происходит для событий входа, очень мала.
Ниже показаны переход состояния геозоны и связанные оповещения. Для простоты подразумеваются условия границы гистериса и геозоны.
Ключевыми аспектами этой схемы состояния являются:
При переходе из GNSS_GeofenceState_Unknown в состояние GNSS_GeofenceState_Exited оповещение не создается.
Если подсистема GNSS не может отслеживать геозоны вообще, необходимо создать одно глобальное оповещение о состоянии отслеживания, а не одно оповещение для каждой геозоны. Подсистема GNSS может поддерживать последнее состояние для каждого забора вместо перехода в состояние GNSS_GeofenceState_Unknown, чтобы при повторном отслеживании необходимые оповещения геозон можно создавать на основе нового обнаружения входа и выхода.
Сохранение последнего известного состояния в настоящее время не требуется, так как после того, как драйвер GNSS вызывает событие с gnss_geofences_tracking_status как FAILURE, платформа расположения в HLOS начнет выполнять отслеживание геозон. В течение этого времени подсистема GNSS должна продолжать проверяться в оптимизированном для питания способе, если геозоны можно отслеживать снова. IHV может использовать оптимизации, чтобы сделать это обнаружение низкой мощностью. Ниже приведены распространенные методы оптимизации.
Прогрессивная отката
Ожидание низкой стоимости сигналов, которые свидетельствуют о движениях устройств, таких как данные акселератора или уведомления об изменениях wi-Fi.
Запрос сеанса отслеживания расстояния с низкой точностью из HLOS с помощью общедоступных API Geolocation WinRT.
Низкая мощность проверяет наличие спутникового сигнала.
Когда подсистема GNSS снова может отслеживать геозоны, она взаимодействует таким образом, задав gnss_geofence_tracking_status как SUCCESS для адаптера GNSS/HLOS
Адаптер GNSS выдает GNSS_ResetGeofenceTracking команды и повторно добавляет активные геозоны с текущими критериями входа и выхода для каждой геозоны. Это необходимо сделать, если набор геозон, которые необходимо отслеживать, изменился или в состоянии для любой геозонии.
Требования
Требование | Ценность |
---|---|
заголовка | gnssdriver.h |