我想找到设备的当前位置,无论它在哪里。下面的代码在户外运行良好,但在室内不会通知更新。
下面的代码无法访问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