我要从 NETWORK_PROVIDER中获得gps坐标,用的以下的代码实现这个功能。
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener);
//init();
}
/* Class My Location Listener */
public class MyLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location loc)
{
//_pd.dismiss();
loc.getLatitude();
loc.getLongitude();
String Text = "My current location is: " +"Latitud = " + loc.getLatitude() +"Longitud =" + loc.getLongitude();
txtInfo.setText(Text);
Toast.makeText( getApplicationContext(),Text,Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderDisabled(String provider)
{
Toast.makeText( getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT ).show();
}
@Override
public void onProviderEnabled(String provider)
{
Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
{
}
}
但是,使用上面的方法有时候能获得gps坐标,有时候又获取不了,为什么呢?
使用GPS获取 Geo Fix 需要很长的时间,因此你需要在无线网络和GPS之间切换来获得可靠的Geo坐标。要首先检查无线网络看是否启用,然后返回给GPS provider。
相关资料:Android-location-providers-gps-network-passive
这是因为有些locations不能显示经纬度。这不是一个大问题,你只需要检查你的lat和lng是否返回null。
如果返回null你只需要显示一个简单的消息。