перечисление LOCATION_REPORT_STATUS (locationapi.h)
[API расположения Win32 доступен для использования в операционных системах, указанных в разделе Требования. В последующих версиях он может быть изменен или недоступен. Вместо этого используйте API Windows.Devices.Geolocation . ]
Определяет возможное состояние для новых отчетов определенного типа.
Синтаксис
typedef enum LOCATION_REPORT_STATUS {
REPORT_NOT_SUPPORTED = 0,
REPORT_ERROR = 1,
REPORT_ACCESS_DENIED = 2,
REPORT_INITIALIZING = 3,
REPORT_RUNNING = 4
} ;
Константы
REPORT_NOT_SUPPORTED Значение: 0 Запрошенный тип отчета не поддерживается API. Поставщики расположения запрошенного типа не установлены. |
REPORT_ERROR Значение: 1 При создании отчета произошла ошибка, или поставщики расположений для запрошенного типа не могут предоставить какие-либо данные. Поставщики расположений в настоящее время могут быть недоступны, или поставщики расположений не могут получить какие-либо данные. Например, это состояние может возникать, когда датчик GPS находится в помещении, а спутники не находятся в поле зрения. |
REPORT_ACCESS_DENIED Значение: 2 Разрешения на доступ к этому типу отчета не предоставлены. Вызовите ILocation::RequestPermissions. |
REPORT_INITIALIZING Значение: 3 Отчет инициализируется. |
REPORT_RUNNING Значение: 4 Отчет выполняется. Доступны новые данные о расположении для запрошенного типа отчета. |
Комментарии
Эти значения представляют состояние для новых отчетов. Последние отчеты остаются доступными через ILocation::GetReport, независимо от состояния отчета. Если состояние REPORT_RUNNING, данные в отчете являются новыми. В противном случае ILocation::GetReport предоставляет кэшированные данные, если кэшированные данные доступны.
Примеры
В следующем примере кода показано, как получить значения LOCATION_REPORT_STATUS из ILocation::GetReportStatus.
// Get the status of this report type
if (SUCCEEDED(spLocation->GetReportStatus(IID_ILatLongReport, &status)))
{
bool fIsNotRunning = true;
switch (status)
{
case REPORT_RUNNING:
// If the status for the current report is running,
// then do not print any additional message.
// Otherwise, print a message indicating that reports may contain cached data.
fIsNotRunning = false;
break;
case REPORT_NOT_SUPPORTED:
wprintf(L"\nThere is no sensor installed for this report type.\n");
break;
case REPORT_ERROR:
wprintf(L"\nReport error.\n");
break;
case REPORT_ACCESS_DENIED:
wprintf(L"\nAccess denied to reports.\n");
break;
case REPORT_INITIALIZING:
wprintf(L"\nReport is initializing.\n");
break;
}
if (true == fIsNotRunning)
{
wprintf(L"Location reports returned from GetReport contain cached data.\n");
}
}
Ниже приведен пример реализации функции обратного вызова ILocationEvents::OnStatusChanged. Эта реализация выводит сообщения при изменении состояния отчетов о широте и долготе.
// This is called when the status of a report type changes.
// The LOCATION_REPORT_STATUS enumeration is defined in LocApi.h in the SDK
STDMETHODIMP CLocationEvents::OnStatusChanged(REFIID reportType, LOCATION_REPORT_STATUS status)
{
if (IID_ILatLongReport == reportType)
{
switch (status)
{
case REPORT_NOT_SUPPORTED:
wprintf(L"\nNo devices detected.\n");
break;
case REPORT_ERROR:
wprintf(L"\nReport error.\n");
break;
case REPORT_ACCESS_DENIED:
wprintf(L"\nAccess denied to reports.\n");
break;
case REPORT_INITIALIZING:
wprintf(L"\nReport is initializing.\n");
break;
case REPORT_RUNNING:
wprintf(L"\nRunning.\n");
break;
}
}
else if (IID_ICivicAddressReport == reportType)
{
}
return S_OK;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 7 [только классические приложения],Windows 7 |
Минимальная версия сервера | Ни одна версия не поддерживается |
Верхняя часть | locationapi.h |