【发布时间】:2012-05-11 10:15:21
【问题描述】:
如果我们想在 Android 中获得单个 GPS 定位,我们实际上是使用已知函数 requestSingleUpdate() 和 LocationManager.GPS_PROVIDER,对吧?
现在我在打开 GPS 的情况下在我的函数 getLocation() 中执行此操作,但设备不会自动建立连接,除非我手动关闭 GPS 然后再次打开。网络提供商的 requestSingleUpdate() 工作完美,我只是不知道为什么这不适用于 GPS 修复。
这是我源代码的一部分:
getLocation() 由另一个对象每 2 分钟运行一次。在 getLocation() 中,如果 GPS 和网络已打开,它会在第一分钟尝试获取 GPS 定位,然后获取网络位置,如果没有可用的 GPS 定位。
public boolean getLocation() {
// DEBUG
Log.d("GPS Connection", "Entering getLocation()");
gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
networkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if(!gpsEnabled && !networkEnabled)
return false;
if(gpsEnabled && networkEnabled) {
// DEBUG
Log.d("GPS Connection", "Request GPS Data");
locationManager.requestSingleUpdate(LocationManager.GPS_PROVIDER, gpsLocationListener, Looper.getMainLooper());
gpsGetLocationTimeout = new Timer();
gpsGetLocationTimeout.schedule(new GetNetworkLocation(), GPS_MAX_CONNECTION_TIME_MS);
}
...
【问题讨论】: