これは、リスナーを追加せずに最後の既知の場所を取得するために使用するコードです。バッテリーを消耗させたくないので、以下を使用しました。
public static Location getLastLoc(Context context){
Location loc = null;
LocationManager locationManager = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
String best = locationManager.getBestProvider(criteria, true);
//Log.i("***", best);
if (best != null) {
loc = locationManager.getLastKnownLocation(best);
}
//Sometimes getLastKnownLocation return null (new device), so I use network as default when possible.
if (loc == null) {
try {
loc = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
} catch (Exception e) {
e.printStackTrace();
}
}
return loc;
}
私は現在このコードを試していますが、最高のプロバイダーはGPSのようです。
残念ながら、私は今朝、都市Aから都市Bに移動しましたが、GPSの修正はまだありません。(ただし、GPSはオンになっています)
そのため、都市Bにいる間も旧市街Aを取得し、ネットワークの場所は都市Bを認識しています(Googleマップでテスト済み)
それで、私は正確な位置を必要としないので、どのようにして最新の修正を時間内に取得することができますか(GPSは3時間前、ネットワークは10分前です)
ありがとう