Поделиться через


перечисление 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