2012-10-12 37 views
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处于ON状态,则在布尔值gps_enabled中分配“true”。

但是在网络中,我在HTC渴望android设备中激活了2G上网,并且在移动网络中开启了。

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

我们想要改变设备中的任何设置吗?或我的代码中有任何错误?

回答

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

+0

那是不是我已经使用这个代码的问题,当我调试代码,变量分配network_enabled =假的,但我对移动网络。为什么? – Dhana

+0

你的意思是,如果你设置network_enabled = false ..但你的设备上的网络WiFi的符号仍显示为ON? – Lokesh

+0

不,我在设备上打开了nework,但是在调试时变量显示network_enabled = false,并且通过网络无法提供数据。这是我的问题。 – Dhana