我有一个需要用户当前位置的应用。在应用程序中,我已经注册了两个位置提供商来监听位置,另外我也检查了最后的已知位置。但该应用程序始终不会收到该位置。 我今天发现的令人惊讶的事情是,
GPS已关闭
但无线网络的位置已开启。
我打开谷歌地图,我可以看到它如此准确地显示当前位置。但是当我打开我的应用程序时,它无法获得位置。
我很惊讶看到这一点,我认为谷歌地图正在做一些接收位置而不是我做的事情。
以下是我注册位置的方式
locationManager = (LocationManager) this
.getSystemService(Context.LOCATION_SERVICE);
Location location = null;
try {
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 10, 100, this);
Location location1 = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location1 != null)
location = location1;
Log.v(TAG, "Network listener Enabled");
} catch (RuntimeException ee) {
// TODO: handle exception
Log.e(TAG, "Network Providers Disabled");
}
try {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 10, 100, this);
Location location1 = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Log.v(TAG, "GPS listener enabled");
if (location1 != null)
location = location1;
} catch (RuntimeException e) {
Log.e(TAG, "GPS not available");
}
我不知道是否还有其他需要做的事情。请帮帮我。
答案 0 :(得分:1)
是的,我也在我的应用程序中表明了这一点......但不幸的是我们不知道它们的实现;)。如果您使用网络提供商,我认为通过网络检索位置的整个初始化过程是新的。我确信GoogleMaps会缓存或正在检查后台服务中的位置,以便您立即获得位置。
所以你应该做一个后台服务,它会间隔地检查位置并缓存位置。
顺便说一句,这就是2013年新的定位方式:location api new