无法通过android中的Network_Provider获取位置数据!

时间:2011-06-20 17:01:33

标签: android

我遇到以下代码问题。我的手机里没有GPS / WIFI / 3G保持“打开”状态。我想从network_provider中找到用户位置,但由于某种原因,它在手机上将纬度和经度设为0.0和0.0。请帮忙。我的代码如下:

    LocationManager mlocManager =(LocationManager)getSystemService(Context.LOCATION_SERVICE);
            LocationListener mlocListener = new MyLocationListener();
            mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener);
            TextView txt=(TextView)findViewById(R.id.coordinate);
            txt.setText(latid+","+longid+","+accu+"m "+provider);

,requestLocationUpdates如下:

    public class MyLocationListener implements LocationListener
{
@Override
public void onLocationChanged (Location loc)
{
    latid=loc.getLatitude();
    longid=loc.getLongitude();
    accu=loc.getAccuracy();
    TextView txt=(TextView)findViewById(R.id.coordinate);
    txt.setText(latid+","+longid+","+accu+"m");
    Toast.makeText (getApplicationContext(),"Entered function",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)
{
        ;
}

}/* End of Class MyLocationListener */

我想知道为什么我的所有输出都为0.0和0.0,用于lat和long。 还有一件事我注意到,如果我连接到我的家庭WIFI,那么这将获得我的经度和经度的修复。我想知道为什么没有WIFI / 3G / GPS就无法修复! 任何帮助将不胜感激..

2 个答案:

答案 0 :(得分:2)

位置提供商需要启用3G / Wifi / 2G-Edge或GPS才能获得定位。

http://developer.android.com/guide/topics/location/obtaining-user-location.html应该会为您提供更多信息。

答案 1 :(得分:1)

你有0.0 0.0,

这是因为Geopoint将纬度和经度变为1000000次。

如果您的gps 3g wifi出现问题,它会弹出异常,而不是获得0.0,0.0。

所以,如果您要将一对la,long指定给geoPoint对象,请提醒您自己

location.latitude的值* 1000000 = Geopoint.latitude的值

location.longitude的值* 1000000 = Geopoint.longitude的值

**

你当前位置的la / long是基于wifi设备的近似值,并且感觉你在家里移动并不敏感。这就是为什么你得到一个la / long修复的原因。