Android 使用LocationListener时,位置坐标不会更改
我正在应用程序上使用LocationListener。但是,每当我的位置发生更改或执行onLocationChangedLocation方法时,我的位置的坐标根本不会更改。我坐在一辆车里,已经走了几米到几公里了,我的位置没有改变。有什么问题吗 我的代码:Android 使用LocationListener时,位置坐标不会更改,android,google-maps,location,Android,Google Maps,Location,我正在应用程序上使用LocationListener。但是,每当我的位置发生更改或执行onLocationChangedLocation方法时,我的位置的坐标根本不会更改。我坐在一辆车里,已经走了几米到几公里了,我的位置没有改变。有什么问题吗 我的代码: LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); String bestProvider =
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
String bestProvider = locationManager.getBestProvider(new Criteria(), true);
{LocationListener locationListener = new LocationListener()
{
public void onLocationChanged(Location location)
{
//location.getLatitude(), location.getLongtitude()
//location coordinates does not change at all everytime onLocationChanged is called even after I already move several meters or kilometers.
}
//...
}
locationManager.requestLocationUpdates(bestProvider, 0, 0, locationListener);
试试这个
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
locationListener);
您可能正在使用网络提供商。侦听器通常在activty onPause中被删除。您可以在活动的onResume事件中设置侦听器
我不确定安卓找到最好的供应商背后的逻辑是什么。但与网络提供商相比,GPS始终被认为是最精确的。但在某些情况下,无法通过GPS获得位置锁定。这就是网络提供商开始使用的时候
我通常创建一个简单的类来调用函数以获取位置坐标。在函数中,我首先使用GPS请求位置。我等待30秒的位置,如果没有收到,那么我使用网络提供商请求它。通过这种方式,我可以始终确保获得GPS值是我的第一选择。试试这个
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
locationListener);
您可能正在使用网络提供商。侦听器通常在activty onPause中被删除。您可以在活动的onResume事件中设置侦听器
我不确定安卓找到最好的供应商背后的逻辑是什么。但与网络提供商相比,GPS始终被认为是最精确的。但在某些情况下,无法通过GPS获得位置锁定。这就是网络提供商开始使用的时候
我通常创建一个简单的类来调用函数以获取位置坐标。在函数中,我首先使用GPS请求位置。我等待30秒的位置,如果没有收到,那么我使用网络提供商请求它。通过这种方式,我可以始终确保获得GPS值是我的第一选择。在代码中尝试这种方式
if(isInternetEnabled==true)//check for internet connection here
{
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
locationListener);
}
else
{
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,
locationListener);
}
因为我碰巧发现,GPS\U提供商对位置更新没有快速响应,而网络\U提供商则没有。请在代码中尝试这种方法
if(isInternetEnabled==true)//check for internet connection here
{
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
locationListener);
}
else
{
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,
locationListener);
}
因为我的情况是,GPS提供商对位置更新的响应比网络提供商慢。我猜你的位置在变化,但你忽略了纬度和经度的小数部分。请注意位置更改前后小数部分的最后几位。我猜您的位置正在更改,但您忽略了纬度和经度的小数部分。请注意位置更改前后小数部分的最后一位。您是否使用reuiqred权限?何时删除lcation更新侦听器?是。我正在使用所需的权限。我不会删除更新侦听器,因为我总是需要检查用户的位置。是否每次调用时都必须删除它,然后再添加它?您是否使用reuiqred权限?何时删除lcation更新侦听器?是。我正在使用所需的权限。我不会删除更新侦听器,因为我总是需要检查用户的位置。是否每次调用时都要删除然后再添加它?谢谢!但是GPS不依赖于互联网连接,对吗?是的。我知道有很多方法可以确定位置。但是,如果我将根据我是否可以访问互联网来确定我的提供商,那么它仍然不能保证该提供商是否可用。有可能我可以上网,但我没有GPS。谢谢!但是GPS不依赖于互联网连接,对吗?是的。我知道有很多方法可以确定位置。但是,如果我将根据我是否可以访问互联网来确定我的提供商,那么它仍然不能保证该提供商是否可用。有可能我可以上网,但我没有GPS。谢谢你的回复!经过进一步调查,我发现我的手机正在使用网络提供商,即使我将应用程序设置为使用最好的提供商。我的GPS也在那个时候打开,所以我从来没有怀疑过我的手机会使用网络提供商。是否有一种方法可以始终确定网络的最佳提供商,并在其更改后将其设置为location manager的提供商?在我看来,一旦我设置了提供者,值就会一直保持到活动结束。还感谢您提供有关在暂停时删除活动并在恢复时再次设置活动的提示。您是否使用线程或AsyncTask连续调用该方法?两者都可以。但我通常使用线程和处理程序的方法。谢谢你的回复!经过进一步调查,我发现我的手机正在使用网络提供商,即使我将应用程序设置为使用最好的提供商。我的GPS也在那个时候打开,所以我从来没有怀疑过我的手机会使用网络
k提供者。是否有一种方法可以始终确定网络的最佳提供商,并在其更改后将其设置为location manager的提供商?在我看来,一旦我设置了提供者,值就会一直保持到活动结束。还感谢您提供有关在暂停时删除活动并在恢复时再次设置活动的提示。您是否使用线程或AsyncTask连续调用该方法?两者都可以。但我通常使用线程和处理程序方法。