0

在一个 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 处于开启状态,则在布尔值 gps_enabled 中分配“真”。

但是在网络上,我已经在 HTC 渴望的安卓设备中激活了 2G 上网,并在移动网络中打开了。

network_enabled即使网络处于 On 状态,分配给“false”的布尔变量。

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

4

1 回答 1

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

于 2012-10-12T11:39:55.140 回答