我正在开发一个应用程序,第一个活动检查网络和Gps,如果至少存在网络,它会尝试获取当前位置(无需特殊准确性)。 在WIFI模式下,一切都很完美。在GPS模式(如果可用)中,一切都很完美。 问题出在移动互联网上(没有WIFI / GPS)。在这种模式下,onLocationChanged方法在位置请求开始后给我一些坐标。准确性非常糟糕。问题是我无法找到WIFI和MOBILE互联网之间的区别。
..代码
private void startLocationListeners(){
try
{
if (isNetworkEnabled)
{
if (isGPSEnabled)
{
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0, locationListener);
Log.d("TAG", "GPS");
}
else{
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0, locationListener);
Log.d("TAG", "Network");
}
}
}
catch (Exception e)
{
Log.e("Error TAG : LocationManager", "problem", e);
}
}
..这里是onLocationchanged
public void onLocationChanged(Location location) {
stopLocationListeners();
coordinates=String.valueOf(location.getLatitude())+","+String.valueOf(location.getLongitude());
Toast.makeText(context, coordinates, Toast.LENGTH_SHORT).show();
startCamera();
}
};
有什么建议吗?
答案 0 :(得分:0)
你真的要关闭wifi来做你的测试吗?如果是这样,这正是预期的行为。
网络位置查找的工作原理是向互联网发送请求说“我可以看到以下wifi网络和手机信号塔,你能告诉我我在哪里吗?"当wifi打开时你有很多网络,而且因为wifi是一个短程信号,你可以很好地了解它的位置。如果你关闭wifi,那么你所拥有的就是手机信号塔的位置,而且它们相距甚远,因此精确度会下降。