2


長い間試した後、ユーザーの現在の GPS 位置情報を取得する際に問題に直面しています。

それで、プリインストールされたGoogleマップアプリの修正プログラムを使用して、何らかの方法でプログラムで位置修正を取得できると思いましたCurrent Locationか?

バックグラウンドで位置座標を取得できる場合..これは可能ですか?
それで、インテントまたはブロードキャストレシーバーを使用して現在の位置座標を取得することは可能ですか? (マップアプリがそれをブロードキャストしていると仮定して.. ?)

更新#2:ついに..動作するようになりました..

更新:以前のコードはこちら(PasteBin リンク)

アドバイスは大歓迎です..ありがとう..

4

2 に答える 2

2

OKコードブレーカー、これが私のロケーションフェッチャーの実装方法です:

// the listener to listen to the locations
private LocationListener listener = null;
// a location manager
private LocationManager lm  = null;
// locations instances to GPS and NETWORk
private Location myLocationGPS, myLocationNetwork;

// instantiates fields
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
myLocationNetwork = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
myLocationGPS = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
listener = new myLocationListener();

// the listener that gonna notify the activity about location changes
public class myLocationListener implements LocationListener {
    @Override
    public void onLocationChanged(Location location) {
        // "location" is the RECEIVED locations and its here that you should proccess it

        // check if the incoming position has been received from GPS or network
        if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            lm.removeUpdates(this);
        } else {
            lm.removeUpdates(listener);
        }
    }
    @Override
    public void onProviderDisabled(String provider) {
        lm.removeUpdates(this);
        lm.removeUpdates(listener);         
    }
    @Override
    public void onProviderEnabled(String provider) {
    }
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
}

ご覧のとおり、それほどトリッキーなことはありません。リスナーをインスタンス化すると、Android デバイスの上部に GPS アイコンが表示されます。また、位置が変わるたびに (デバイスを持って歩いているときなど)、OnLocationChanged メソッドが呼び出されます。

また、場所を取得したいだけの場合は、いくつかの方法があり、すべての方法で返される速度と精度が異なります。また、GoogleGLM ( http://www.google.com/glm/mmapへのリクエストで、あなたの位置を含む json エンコードされた文字列を返します) サービス、三角測量、およびネットワーク別の場所も確認してください。上記のスニペットでは、GPS とネットワークのいずれかを使用して位置情報を取得する方法を示しました。それが助けになったことを願っています... :)

于 2013-02-04T19:44:23.370 に答える
0

パッシブ ロケーション プロバイダを使用できますが、Google マップからロケーションを取得することを明示的に意味するわけではありません。また、アップデートを受信するには、GoogleMaps が実行されている必要があります。Google マップから現在地の最新情報を受け取るには、ACCES_FINE_LOCATION へのアクセス許可も必要です。また、GoogleMaps を起動して、ユーザーの操作なしで強制的に位置を更新することもできません。正確なユーザー位置が必要な場合は、GPS_PROVIDER を使用する以外に方法はありません。

http://developer.android.com/reference/android/location/LocationManager.html#PASSIVE_PROVIDER

また、http ://developer.android.com/guide/topics/location/strategies.html http://developerlife.com/tutorials/?p=1375 お読みください。

于 2013-02-04T19:27:31.090 に答える