Compartir a través de


enumeración LOCATION_REPORT_STATUS (locationapi.h)

[La API de ubicación de Win32 está disponible para su uso en los sistemas operativos especificados en la sección Requisitos. En versiones posteriores podría modificarse o no estar disponible. En su lugar, use la API Windows.Devices.Geolocation . ]

Define el estado posible para los nuevos informes de un tipo de informe determinado.

Syntax

typedef enum LOCATION_REPORT_STATUS {
  REPORT_NOT_SUPPORTED = 0,
  REPORT_ERROR = 1,
  REPORT_ACCESS_DENIED = 2,
  REPORT_INITIALIZING = 3,
  REPORT_RUNNING = 4
} ;

Constantes

 
REPORT_NOT_SUPPORTED
Valor: 0
La API no admite el tipo de informe solicitado. No hay proveedores de ubicación del tipo solicitado instalados.
REPORT_ERROR
Valor: 1
Se produjo un error al crear el informe o los proveedores de ubicación para el tipo solicitado no pueden proporcionar datos. Los proveedores de ubicación podrían no estar disponibles actualmente o los proveedores de ubicación no pueden obtener datos. Por ejemplo, este estado puede producirse cuando un sensor GPS está en interior y no hay satélites en la vista.
REPORT_ACCESS_DENIED
Valor: 2
No se han concedido permisos para acceder a este tipo de informe. Llame a ILocation::RequestPermissions.
REPORT_INITIALIZING
Valor: 3
Se está inicializando el informe.
REPORT_RUNNING
Valor: 4
El informe se está ejecutando. Hay disponibles nuevos datos de ubicación para el tipo de informe solicitado.

Comentarios

Estos valores representan el estado de los nuevos informes. Los informes más recientes permanecen disponibles a través de ILocation::GetReport, independientemente del estado notificado. Si el estado es REPORT_RUNNING, los datos de un informe son nuevos. De lo contrario, ILocation::GetReport proporciona datos almacenados en caché si los datos almacenados en caché están disponibles.

Ejemplos

En el ejemplo de código siguiente se muestra cómo recuperar los valores de LOCATION_REPORT_STATUS de 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");
        }
    }

El código siguiente es una implementación de ejemplo de la función de devolución de llamada ILocationEvents::OnStatusChanged. Esta implementación imprime mensajes cuando hay un cambio en el estado de los informes de latitud y longitud.

// 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;
}

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio],Windows 7
Servidor mínimo compatible No se admite ninguno
Encabezado locationapi.h