我已经使用GPS编写了一个程序,它的纬度和经度大约相距8英里。

我以为可能是因为我在里面,但是当我在手机上使用Google地图时,它会显示我在家里。

知道为什么会这样吗?

代码如下:

public class Clue extends Activity {

public static double latitude;
public static double longitude;
LocationManager lm;
LocationListener ll;
Location location;

      /** Called when the activity is first created. */
  @Override
     public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  setContentView(R.layout.blah);

  Criteria criteria = new Criteria();
  criteria.setAccuracy(Criteria.ACCURACY_FINE);

  lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
  ll = new MyLocationListener()}

private boolean getLoc() {
location = getLocation();

   longitude = location.getLongitude();
   latitude = location.getLatitude();
return inCorrectPlace(params);
}


    private Location getLocation() {
  lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
  return lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
}
}


我已经删除了不相关的代码,所有帮助将不胜感激。

最佳答案

您犯的关键错误是认为您可以立即请求准确的位置信息。调用getLastKnownLocation()会给您一个可能很旧的位置。您必须先告诉手机开始尝试获取位置信息。这需要时间,因此您会异步接收位置更新。

您需要执行的操作是调用requestLocationUpdates(),然后在onLocationChanged()类的LocationListener处理程序中接收更新。位置更新不一定会立即收到。可能要花几秒钟到几分钟。

参见android开发指南http://developer.android.com/guide/topics/location/obtaining-user-location.html

09-27 06:03