1

私は、私が使用LocationListenerして更新を取得する サービスを作成したために、Web 経由でユーザーの場所をブロードキャストする 1 つのアプリケーションを作成しています。onLocationChanged

私はrequestLocationUpdates次のように設定しました

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
                                                15000,
                                                0, 
                                                geoHandler);

更新情報を取得するたびに、onLocationChangedその場所を Web 経由でブロードキャストします。

問題はonLocationChanged、時間制限を超えていなくても頻繁に発生し(完全に予測不可能です) 、位置情報を頻繁にブロードキャストしているカスタム関数をトリガーすることです。

そのため、このプロセスを適切なタイムリーな方法で同期する方法がわかりません.15秒ごとに場所がWeb経由でブロードキャストされます

4

2 に答える 2

1

onLocationChanged呼ばれる頻度はどれくらいですか?

minTime!=0 パラメータを に追加すると、次のようになるため、これは奇妙な動作です。

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, minTime, minDistance, geoHandler)

その場合、リスナーは minTime の後にのみ通知されません。

より深い調査の結果、minTime は相対的であることがわかりました。多くの要因に依存するため、 onLocationChanged は minTime の後に正確に呼び出されません。Google では、電力とバッテリー効率のためにこのパラメーターを使用することをお勧めします。したがって、1000*60*5 (5 分) のように、より大きな値として使用する必要があります。

15 秒ごとに自分の位置をブロードキャストする必要がある場合は、GPS ピンポイントを即座にトリガーできないことに注意してください。少なくとも 5 ~ 10 秒かかります (最良の場合)。したがって、デザインを次のように変更する必要があります。

  • locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, geoHandler)
  • 位置情報を最後に送信/処理したのはonLocationChangedいつかを確認し、経過時間が 15 秒以上の場合はブロードキャストします。

お役に立てば幸いです。

于 2012-12-06T15:08:55.600 に答える
1

locationManager.requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)

minTime 位置更新の最小時間間隔 (ミリ秒)

minDistance 位置更新間の最小距離 (メートル単位)

minTime を 15 秒に設定していますが、minDistance が 0 メートルであるため、頻繁にトリガーされます。GPS 値のわずかな変化が位置の更新をトリガーするため、15 秒が経過するのを待つ必要はありません。数メートル (1 または 3 など) を指定すると、更新の間隔が長くなります。

于 2012-12-06T15:36:46.430 に答える