Tôi chỉ cần nhận vị trí của người dùng. Tốt hơn là vị trí chính xác, nhưng nếu không thể, vị trí thô sẽ ổn.LocationManager và LocationClient cùng nhau để có được vị trí người dùng
Theo các tài liệu:
LocationClient.getLastLocation()
Returns the best most recent location currently available.
và
LocationManager.getLastKnownLocation(String)
Returns a Location indicating the data from the last known location fix obtained from the given provider.
Nếu sự hiểu biết của tôi là đúng, người trước đây sẽ cho tôi một kết quả rất tốt (hoặc đôi khi vô giá trị) trong khi người thứ hai sẽ cho tôi một kết quả hiếm khi là vô giá trị.
này được mã của tôi (giản thể)
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationClient = new LocationClient(this, this, this);
@Override
public void onConnected(Bundle dataBundle) {
setUserLocation();
}
private void setUserLocation() {
myLocation = locationClient.getLastLocation();
if (myLocation == null) {
myLocation = locationManager.getLastKnownLocation(locationManager.getBestProvider(new Criteria(), false));
if (myLocation == null) {
//I give up, just set the map somewhere and warn the user.
myLocation = new Location("");
myLocation.setLatitude(-22.624152);
myLocation.setLongitude(-44.385624);
Toast.makeText(this, R.string.location_not_found, Toast.LENGTH_LONG).show();
}
} else {
isMyLocationOK = true;
}
}
Nó dường như được làm việc nhưng câu hỏi của tôi là:
- là sự hiểu biết của tôi về
getLastLocation
vàgetLastKnownLocation
có đúng không? - Đây có phải là cách tiếp cận tốt không?
- Tôi có gặp rắc rối khi sử dụng cả hai trong cùng một hoạt động?
Cảm ơn
Điều cần biết! Tôi đã có mã để xử lý sự sẵn có của Google Play (trên thực tế có thể ứng dụng chỉ không làm việc mà không có nó). Lúc đầu, tôi chỉ sử dụng LocationServices nhưng nhiều lần tôi có kết quả lạ từ nó. Chuyển sang LocationClient đã cho tôi kết quả tốt hơn nhiều, nhưng cũng có kết quả null trong nhiều trường hợp mà tôi không thể tái tạo. Tôi nghĩ rằng hệ thống Android có thể ghi lại vị trí được biết cuối cùng ở một số nơi mà chỉ có thể truy cập được vào lớp LocationService, do đó mã của tôi ở trên. Nếu điều đó không đúng, thì tốt hơn là chỉ dựa vào LocationClient, đúng không? – Androiderson
Xem [flow] này (http://developer.android.com/images/location/getting-location.png) của [trang web chính thức dành cho nhà phát triển.] (Http://developer.android.com/guide/topics/ location/strateg.html) – Aiapaec