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 |