私はあなたの現在の位置を初期化して地図を表示する必要があるアプリケーションを構築しています。 LocationManager.requestLocationUpdates(...)
で位置情報の更新をリクエストしていますが、場所が変更されたときにデータが表示されるだけです(たとえば10フィート移動するなど)。私もgetLastKnownLocationを使用しようとしていますが、(GPSをオンにしたり、アプリケーションを開かずに)GPSを回すような珍しいケースでは、これは私が使用しているすべてのプロバイダでnullを返します。現在の場所を更新中ではなく
getLastKnownLocationがnullを返すたびに、私のアプリは10フィート移動して位置更新を受け取るまで初期化できません。今のところ私は自分の現在地を調べる方法を見つけていないし、requestLocationUpdates(...)
私が購読している瞬間に私の最初のデータを得ることができ、指定された期間を待つか、指定された距離。
1つのアプローチは非常に小さい時間間隔または0時間間隔で私に現在の位置を送信し、LocationListenerを削除して、もう一度requestLocationUpdates(...)
を削除しますが、これはバッテリーを避けるために使用するはるかに大きな値です。
私はこれを解決するためのよりよい方法を探しています。おそらくgetCurrentLocation()のようなものですが、実際には動作するものです。
正確な読み込みを得るには、いずれかのソリューションが場所を待つ必要があります。 GPSプロバイダが位置を取得できない場合は、nullが返されます。 FusedLocation APIには必要な更新の数を設定できるので、必要なものがあれば入手できるだけですが、まだhttps://developers.google.com/android/reference/com/google/を待つ必要がありますandroid/gms/location/LocationRequest.html#public-methods – tyczj
"おそらくgetCurrentLocation()"のようなものですが、これは存在しません。場所を取得することが保証されていないからです。ユーザーがプロバイダを無効にする、またはAndroid 6.0以降でアクセス許可をブロックするという標準的な問題を超えて、デバイスは環境的要因のために場所を取得できない可能性があります。装置は、例えば、地下駐車場にあってもよい。何らかの種類のタイムアウト値を持つ 'getCurrentLocation()'がありますか?はい、それはあなた自身を実装するのは特に難しいことではありません。 – CommonsWare