LOCATION_REPORT_STATUS列挙 (locationapi.h)
[Win32 Location API は、[要件] セクションで指定されたオペレーティング システムで使用できます。 今後のバージョンでは変更されるか、利用できなくなる場合もあります。 代わりに、 Windows.Devices.Geolocation API を使用します。 ]
特定のレポートの種類の新しいレポートで使用可能な状態を定義します。
構文
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 はキャッシュされたデータを提供します。
例
次のコード例は、ILocation::GetReportStatus からLOCATION_REPORT_STATUS値を取得する方法を示しています。
// 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 |
サポートされている最小のサーバー | サポートなし |
Header | locationapi.h |