Я хочу найти текущее местонахождение устройства, где бы оно ни находилось. Приведенный ниже код отлично работает на открытом воздухе, но в помещении уведомления об обновлениях не приходят.
Код ниже не может получить доступ к NETWORK_PROVIDER, возвращаются только GPS_PROVIDER и PASSIVE_PROVIDER, почему? Другие приложения на том же устройстве могут определять мое местоположение в помещении.
if ( mLocationManager==null )
mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Location l;
for ( String provider : mLocationManager.getAllProviders() ){
mLocationManager.requestLocationUpdates(provider, 1000, 1, locationListener);
l = mLocationManager.getLastKnownLocation(provider);
if ( isBetterLocation(l, currentBestLocation) )
currentBestLocation = l;
}
когда я изменяю его на жестко закодированный NETWORK_PROVIDER:
if ( mLocationManager==null )
mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Location l;
List<String> providers = new ArrayList<String>();
providers.add(LocationManager.GPS_PROVIDER);
providers.add(LocationManager.NETWORK_PROVIDER);
// for ( String provider : mLocationManager.getAllProviders() ){
for ( String provider : providers ){
mLocationManager.requestLocationUpdates(provider, 1000, 1, locationListener);
l = mLocationManager.getLastKnownLocation(provider);
if ( isBetterLocation(l, currentBestLocation) )
currentBestLocation = l;
}
выдается следующее исключение:
11-17 14:06:13.145: E/AndroidRuntime(7896): Caused by: java.lang.IllegalArgumentException: provider=network