0

我正在android中开发一个应用程序,我想获得android手机的纬度和经度。我获取纬度和经度的代码是在一段时间后给出值。有时,它根本没有给出值。谁能帮我做点什么!

4

3 回答 3

1

您需要添加此代码以获取当前位置。确保您授予所有权限

Location Manager location =  locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(location!=null) 
{
 latitude = location.getLatitude();
 longitude = location.getLongitude();
}
于 2012-12-27T09:49:03.410 回答
0

一种更快的方法是获取最后一个已知位置getLastKnownLocation() 并检查该位置的时间是否不远 location.getTime()。或者使用它直到你得到真实的位置。

另一个提示是同时使用 GPS_PROVIDER 和 NETWORK_PROVIDER,这样您的代码将如下所示:

    LocationManager locManager; 
    locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
/*call both providers , the quickest one will call the listener and in the listener you remove the locationUpdates*/
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0 ,0 , locationListener); 
    locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0 ,0 , locationListener);


    Location location = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
    /*check both providers even for lastKnownLocation*/
    if (location == null)
    {
     location = locManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
    }

    if(location != null) { 

    String lat = String.valueOf(location.getLatitude()); 
    v1.setText(lat); 
    String longi = String.valueOf(location.getLatitude()); 
    v2.setText(longi); 
    }

这是一个简单的示例,更复杂的解决方案将比较lastKnownLocation提供商之间的最新版本。

于 2012-12-27T09:22:43.757 回答
0

如果您没有获得最新信息,请使用您的位置服务提供商提供的最新位置,因为

  • 当您的应用程序当时没有运行时,其他一些应用程序使用位置管理器来获取当前位置。

  • 那么一旦你使用位置管理器启动你的应用程序,位置管理器基本上需要一些时间来准备发送当前位置,所以那时你必须从位置提供者那里获得最后知道的位置,因为你必须以这种方式设计服务。一旦位置管理器稳定,然后使用这些位置。

这是最好的方法。

谢谢巴夫迪普

于 2012-12-27T09:56:53.383 回答