Partager via


énumération LOCATION_REPORT_STATUS (locationapi.h)

[L’API d’emplacement Win32 est disponible pour une utilisation dans les systèmes d’exploitation spécifiés dans la section Configuration requise. Il sera peut-être modifié ou indisponible dans les versions ultérieures. Utilisez plutôt l’API Windows.Devices.Geolocation . ]

Définit les status possibles pour les nouveaux rapports d’un type de rapport particulier.

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
Valeur : 0
Le type de rapport demandé n’est pas pris en charge par l’API. Aucun fournisseur d’emplacement du type demandé n’est installé.
REPORT_ERROR
Valeur : 1
Une erreur s’est produite lors de la création du rapport, ou les fournisseurs d’emplacement pour le type demandé ne peuvent pas fournir de données. Les fournisseurs d’emplacement peuvent être actuellement indisponibles ou les fournisseurs d’emplacement ne peuvent pas obtenir de données. Par exemple, cet état peut se produire lorsqu’un capteur GPS se trouve à l’intérieur et qu’aucun satellite n’est visible.
REPORT_ACCESS_DENIED
Valeur : 2
Aucune autorisation n’a été accordée pour accéder à ce type de rapport. Appelez ILocation ::RequestPermissions.
REPORT_INITIALIZING
Valeur : 3
Le rapport est en cours d’initialisation.
REPORT_RUNNING
Valeur : 4
Le rapport est en cours d’exécution. Les nouvelles données d’emplacement pour le type de rapport demandé sont disponibles.

Remarques

Ces valeurs représentent status pour les nouveaux rapports. Les rapports les plus récents restent disponibles via ILocation ::GetReport, quelle que soit la status signalée. Si le status est REPORT_RUNNING, les données d’un rapport sont nouvelles. Sinon, ILocation ::GetReport fournit des données mises en cache si les données mises en cache sont disponibles.

Exemples

L’exemple de code suivant montre comment récupérer les valeurs LOCATION_REPORT_STATUS à partir 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");
        }
    }

Le code suivant est un exemple d’implémentation de la fonction de rappel ILocationEvents ::OnStatusChanged. Cette implémentation imprime les messages en cas de modification de la status des rapports de latitude/longitude.

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7 [applications de bureau uniquement],Windows 7
Serveur minimal pris en charge Aucun pris en charge
En-tête locationapi.h