Condividi tramite


enumerazione LOCATION_REPORT_STATUS (locationapi.h)

[L'API Percorso Win32 è disponibile per l'uso nei sistemi operativi specificati nella sezione Requisiti. È possibile che in versioni successive sia stata modificata o non sia più disponibile. Usare invece l'API Windows.Devices.Geolocation . ]

Definisce lo stato possibile per i nuovi report di un tipo di report specifico.

Sintassi

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

Costanti

 
REPORT_NOT_SUPPORTED
Valore: 0
Il tipo di report richiesto non è supportato dall'API. Non sono installati provider di percorsi del tipo richiesto.
REPORT_ERROR
Valore: 1
Si è verificato un errore durante la creazione del report o i provider di località per il tipo richiesto non sono in grado di fornire dati. I provider di località potrebbero non essere attualmente disponibili o i provider di località non possono ottenere dati. Ad esempio, questo stato può verificarsi quando un sensore GPS è interno e nessun satellite è in vista.
REPORT_ACCESS_DENIED
Valore: 2
Non sono state concesse autorizzazioni per accedere a questo tipo di report. Chiamare ILocation::RequestPermissions.
REPORT_INITIALIZING
Valore: 3
Il report viene inizializzato.
REPORT_RUNNING
Valore: 4
Il report è in esecuzione. Sono disponibili nuovi dati di posizione per il tipo di report richiesto.

Commenti

Questi valori rappresentano lo stato dei nuovi report. I report più recenti rimangono disponibili tramite ILocation::GetReport, indipendentemente dallo stato segnalato. Se lo stato è REPORT_RUNNING, i dati in un report sono nuovi. In caso contrario, ILocation::GetReport fornisce dati memorizzati nella cache se sono disponibili dati memorizzati nella cache.

Esempio

Nell'esempio di codice seguente viene illustrato come recuperare i valori di LOCATION_REPORT_STATUS da 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");
        }
    }

Il codice seguente è un'implementazione di esempio della funzione di callback ILocationEvents::OnStatusChanged. Questa implementazione stampa i messaggi quando si verifica una modifica dello stato dei report di latitudine/longitudine.

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

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [solo app desktop],Windows 7
Server minimo supportato Nessuno supportato
Intestazione locationapi.h