我已经使用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