0

LocationManagerクラスの問題に直面しています:

onCreate()から拡張されたクラスの現在の場所を更新したいMapActivity:

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
MyLocationListener lcs = new MyLocationListener();       
lcs.onLocationChanged(lm.getLastKnownLocation(LocationManager.GPS_PROVIDER));

一方、場所を返しますが不正確です。次のように返されるものgetLastKnownLocation()を呼び出したいです:LocationManager.requestLocationUpdates()nullonCreate()

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
MyLocationListener lcs=new MyLocationListener();         
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, lcs);

で現在の場所を取得する方法を誰か教えてもらえますonCreate()か?

4

3 に答える 3

1

おかげで、応答して非常に合理的な提案をしてくれた人たちですが、残念ながらこれらは私にはうまくいきませんでした。

私は少しの時間遅延を実装することで目標を達成し、すべてが正常に機能し始め、Oncreateメソッドで場所を取得するという私の主な目標が達成されました。OnCreateメソッドが最初に呼び出され、後でOnResumeが呼び出され、マップランダリングを使用して現在の場所を取得する場合は、最初にマップがレンダリングされるのを待ってから、場所更新コードを呼び出す必要があるという理解が得られました。

于 2011-09-27T06:38:17.487 に答える
1

LocationManager提供されたリスナーを使用してコードとのみ通信します。新しい場所の修正が利用可能にonLocationChanged()なると、作成したクラスのlcsインスタンスで呼び出されます。MyLocationListener

での最初の位置情報の修正を待っている間に、アプリが強制終了される危険を冒したくありませんonCreate()

ベスト プラクティスは、 に登録LocationListeneronResume()、を使用して再度登録解除することです。ユーザーは、アプリがフォアグラウンドにないときにバッテリーを消耗しないことに感謝するでしょう :)onPause()LocationManager.removeUpdates(LocationListener)

于 2011-09-26T14:45:50.373 に答える
0

これがチュートリアルです http://www.androidcompetencycenter.com/?s=GPS

または、これを試して くださいhttp://www.firstdroid.com/2010/04/29/android-development-using-gps-to-get-current-location-2/

于 2011-09-26T14:49:43.253 に答える