如何通过互联网获取地理数据?

时间:2012-10-12 11:29:38

标签: java android android-location

在Android应用程序中,我编写了代码来通过GPS或网络获取地理数据,其中一个是通过它获取数据。这是我的代码,

public boolean getLocation(Context context, LocationResult result)
{
    boolean gps_enabled=false;
    LocationManager lm;
    boolean network_enabled=false; 
    this.context = context;
    locationResult=result;
    Toast.makeText( context,"getLocation()",Toast.LENGTH_SHORT).show();
    if(lm == null)
        lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
    try
    {
        gps_enabled=lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
    }
    catch(Exception ex){}

    try
    {
        network_enabled=lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    }
    catch(Exception ex){}


    if(!gps_enabled && !network_enabled)
    {
        Toast.makeText(context, "GPS & Network disabled", Toast.LENGTH_SHORT).show();
        return false;
    }
}

使用LocationManager检查GPS&网络是否开启。

如果GPS处于ON状态,则在布尔值gps_enabled中指定为“true”。

但在网络方面,我已经在HTC欲望的Android设备中启动了2G上网,并在移动网络中启用了Switched ON。

布局变量network_enabled在“开启”状态下分配给“假”网络。

我们是否想更改设备中的任何设置?或者我的代码中有任何错误?

1 个答案:

答案 0 :(得分:1)

这取决于可用性:

Location net_loc=null, gps_loc=null;
if(gps_enabled)
gps_loc=lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(network_enabled)
net_loc=lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

NETWORK_PROVIDER:网络位置提供商的名称。该提供商根据蜂窝塔和WiFi接入点的可用性确定位置。通过网络查找检索结果。需要权限android.permission.ACCESS_COARSE_LOCATION或android.permission.ACCESS_FINE_LOCATION。

GPS_PROVIDER: GPS位置提供商的名称。该提供商使用卫星确定位置。根据条件,此提供程序可能需要一段时间才能返回位置修复程序。需要权限android.permission.ACCESS_FINE_LOCATION。

请参阅此链接:http://developer.android.com/reference/android/location/LocationManager.html#getBestProvider%28android.location.Criteria,%20boolean%29