2

アプリケーション全体に1つのLocationListenerを実装する必要があります。

LocationListenerでサービスを使用できることは知っていますが、問題は、場所が変更されたときに通知機能を使用する必要があることです。すべてのアクティビティで現在の位置が変更されたらすぐに必要になるため、いつでも最後の場所を取得できる場合は十分ではありません。

したがって、擬似コードでは、次のようなものが必要です。

myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {

public void onLocationChanged(Location location) {
                notifyAllActivities(location);
            }
};

そしてすべての活動で:

void onNotify(Location location) { //... }

4

2 に答える 2

3

CommonsWareのLocationPollerライブラリを使用してみましたか?

これは非常に堅牢であることが知られており、私はロケーションベースのアプリケーションの1つで個人的に使用しています。

それの良いところの1つは、使用との互換性Serviceです。これは、アプリがバックグラウンドにある場合でも位置情報の更新を取得するために必要なものです。それはWakeLock、電話を起こし、位置を取得し、それを優雅に解放するためにを取得します。

于 2012-08-04T20:18:51.903 に答える
2

サービス呼び出しをsendBroadcast()にして、インテントをブロードキャストします。そのインテントに経度/緯度を追加として追加します。場所を必要とする各アクティビティで、インテントのBroadcastReceiverを登録し、レシーバーのonReceive()のインテントのエクストラからlng/latを取得します。

于 2012-08-04T20:10:47.783 に答える