私はCriteriaオブジェクトを使用して、そのような最高のプロバイダーを取得しています
final boolean isGpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(isGpsEnabled) {
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
crit.setCostAllowed(true);
crit.setPowerRequirement(Criteria.NO_REQUIREMENT);
crit.setSpeedRequirement(false);
String provider = locationManager.getBestProvider(criteria, true);
locationManager.requestLocationUpdates(provider, 600000, 0, new myLocationListener());
}
私の携帯電話(Android 4.1)では、[GPS衛星を使用する]オプションと[ワイヤレスネットワークを使用する]オプションの両方が有効になっています。さて、上記のコードは私が屋外にいるときにうまく機能し、GPSの位置を教えてくれます。
しかし、私が屋内にいるときは、「ネットワーク」プロバイダーに戻りません。GPS経由で位置情報を取得しようとし続け、取得することはありません(1分ほど待ちます)
Criteria.ACCURACY_COARSEを使用するようにCriteriaのコードを変更すると、「ネットワーク」プロバイダーが使用されます。
最初にGPSを試してみるにはどうすればよいですか(有効になっているため)。屋内にいるため、衛星に接続して「ネットワーク」の使用にフォールバックすることはできません。私はそれを簡単に機能させることができません。もう一度言いますが、GPSは有効になっていますが、衛星にアクセスできないため、代わりにネットワークの位置を取得する必要があります。
ありがとう。