1

BackgroundWorker で GPS 位置を取得しようとしています。データはキャッシュから取得され、これらのキャッシュは 15 分ごとに更新されることを読みました。キャッシュの更新間隔を再スケジュールすることはできますか? 現在、エミュレーターを使用していますが、イベント StatusChanged で常に NoData を取得します。

わかりました、エミュレータでどのように動作するか説明していただけますか? これが私のコードです:

private GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);

    private void StartGeoWatcher()
    {
        watcher.StatusChanged += GeoWatcherStatusChanged;
        watcher.PositionChanged += GeoWatcherPositionChanged;
        watcher.Start();
    }

    void GeoWatcherPositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
    {

    }

    void GeoWatcherStatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
    {
        switch (e.Status)
        {
                case GeoPositionStatus.Initializing:
                    break;
                case GeoPositionStatus.Ready:
                    break;
                case GeoPositionStatus.NoData:
                    break;
                case GeoPositionStatus.Disabled:
                    break;
        }

    }

アプリでエミュレーターを起動します。その後、追加ツールでいくつかの位置を選択します。位置が選択されたら、アプリのボタンをクリックすると、定期的なタスクが実行されます。最初: StatusChanged は、ステータス「初期化中」で呼び出されます。2 番目: StatusChanged は、ステータス「NoData」で呼び出されます。追加のツールで場所を選択したため、理由はわかりません。

4

1 に答える 1

0

これは正しくありません。GeoCoordinateWatcher.DesiredAccuracyプロパティに GeoPositionAccuracy.High を指定すると、リアルタイムの GPS 位置を取得できます。しかし、これはバッテリーを消耗します。

通常の設定でも、ほぼリアルタイムの位置を取得できるはずです。

于 2013-03-05T19:39:53.453 に答える