非常にきめ細かな場所は必要なく、すばやく必要なので、getLastKnownLocation
を使用する必要があります。このような何か:
LocationManager lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE);
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_COARSE);
String provider = lm.getBestProvider(crit, true);
Location loc = lm.getLastKnownLocation(provider);
編集: アンドロイドのdevのブログは、これを行うに素敵なポストhereを持っています。このブログのスニペットは、すべてのロケーションプロバイダを繰り返して、最後に知られている場所を取得します。これはあなたが必要としているようです。
List<String> matchingProviders = locationManager.getAllProviders();
for (String provider: matchingProviders) {
Location location = locationManager.getLastKnownLocation(provider);
if (location != null) {
float accuracy = location.getAccuracy();
long time = location.getTime();
if ((time > minTime && accuracy < bestAccuracy)) {
bestResult = location;
bestAccuracy = accuracy;
bestTime = time;
}
else if (time < minTime &&
bestAccuracy == Float.MAX_VALUE && time > bestTime){
bestResult = location;
bestTime = time;
}
}
}
'ACCURACY_FINE'が欲しかった何の反対のように聞こえます。 –
私の悪いです。 ACCURACY_COARSEに変更されました –