Android网络提供商和gps提供商处理

Android网络提供商和gps提供商处理,android,gps-time,Android,Gps Time,我已经完成了这段代码,我要求更新位置。我想知道我是否正确地实现了它。打开页面后,我请求更新(首选网络而非gps)…并在函数onlocationchanged中显示位置。我想问一下,在onlocationchanged内部,当我获取LastKnownLocation时,是否可能得到类似的位置null? 我停止使用ghetlastknownlocation,因为它有时返回null,有时返回错误的值 onLocationChanged()方法仅在其是具有适当纬度和经度的位置更新时调用。它可能是零到一点

我已经完成了这段代码,我要求更新位置。我想知道我是否正确地实现了它。打开页面后,我请求更新(首选网络而非gps)…并在函数onlocationchanged中显示位置。我想问一下,在onlocationchanged内部,当我获取LastKnownLocation时,是否可能得到类似的位置null? 我停止使用ghetlastknownlocation,因为它有时返回null,有时返回错误的值

onLocationChanged()方法仅在其是具有适当纬度和经度的位置更新时调用。它可能是零到一点点的可能性,但我从来没有经历过

你做得很好,但我想提个建议。 考虑一个场景-

网络提供商已启用,您已请求位置更新。但由于某些原因,它不会返回位置更新(在许多情况下,位置提供程序不会返回位置更新,也不强制返回位置更新。)

现在根据你的代码,它不会检查GPS提供商,因为它在“else if(isGPSEnabled)”中。所以我建议你只在下面这样的“如果”语句中实现它

if( isNetworkEnabled )
    lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0, this);

if( isGPSEnabled )                                                                                      
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,1,0, this);

好的,谢谢。不要只更改位置我正在执行locationmanager.removeupdates如果执行locationmanager.removeupdates,则它将停止侦听位置更新。当它打开页面时,我只需要它一次。然后,你就可以了。一旦你得到位置更新,你可以立即停止监听进一步的位置更新
if( isNetworkEnabled )
    lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0, this);

if( isGPSEnabled )                                                                                      
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,1,0, this);