我使用GPS制作了一个节目,其纬度和经度距离大约8英里。
我认为这可能是因为我在里面,但是当我在手机上使用谷歌地图时,它会在我的房子里显示出来。
知道为什么会这样吗?
以下代码:
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);
}
}
我已经删除了不相关的代码,所有帮助将不胜感激。
答案 0 :(得分:3)
您所犯的关键错误是认为您可以立即请求准确的位置修复。调用getLastKnownLocation()
会给你一个可能很旧的位置。你必须先告诉手机才能开始尝试定位。这需要时间,因此您会异步接收位置更新。
您需要做的是致电requestLocationUpdates()
,然后在onLocationChanged()
课程的LocationListener
处理程序中接收更新。不一定会立即收到位置更新。可能需要几秒到几分钟。
请参阅android开发指南http://developer.android.com/guide/topics/location/obtaining-user-location.html
答案 1 :(得分:2)
你不能真正依赖getLastKnownLocation
是可靠的。它可能已过时,不准确或为空。
您应该使用requestLocationUpdates
来积极修复。
至于为什么谷歌地图正在修复您的位置,它可能正在使用网络提供商,而您只检查上次GPS定位。