2013-07-09 29 views
6

Tôi đang phát triển một ứng dụng Android trong đó vị trí hiện tại và chính xác là chìa khóa. Sau khi sửa lỗi GPS được phát hiện, nó sẽ chuyển sang hoạt động tiếp theo.Android: Chỉ nhận vị trí gần đây, không getLastKnownLocation?

Vấn đề là tôi đã thử nghiệm ở ngoài trời và thấy rằng đôi khi nó chỉ sử dụng vị trí từ lần sửa trước.

Vì vậy, những gì tôi đang yêu cầu; là có bất kỳ logic nào khác để có được vị trí từ LocationManager khác hơn là bởi getLastKnownLocation? Tôi chưa tìm thấy ví dụ nào không giống như một ví dụ:

Location location = locationManager.getLastKnownLocation(provider); 

Thanx!

Trả lời

2

Dưới đây là đoạn code mẫu từ official guide (với những thay đổi nhỏ):

// Acquire a reference to the system Location Manager 
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 

// Define a listener that responds to location updates 
LocationListener locationListener = new LocationListener() { 
    public void onLocationChanged(Location location) { 
     makeUseOfNewLocation(location); 
    } 

    public void onStatusChanged(String provider, int status, Bundle extras) {} 
    public void onProviderEnabled(String provider) {} 
    public void onProviderDisabled(String provider) {} 
    }; 

// Register the listener with the Location Manager to receive location updates 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 

Tại đây, bạn chỉ cần yêu cầu cập nhật từ GPS, và ngay sau khi vị trí được nhận, bạn sẽ nhận được một cuộc gọi lại gọi điện.

+0

Điều này đã làm cho tôi! Tất nhiên, trong trường hợp của tôi, tôi không có hoặc cần vị trí cho đến khi nó _changes_. Nếu tôi gọi phương pháp tiếp theo của tôi từ 'onLocationChanged' tôi thậm chí không cần phải nghe để sửa chữa GPS. Thanx! – dhafnar

+0

Tôi đã làm cùng một mã .. nhưng onLocationChanged() không bao giờ được gọi .. Tôi không biết vấn đề là gì –

2

Bạn có thể sử dụng LocationListener và sau đó gọi locationManager.requestLocationUpdates() chuyển triển khai người nghe của riêng bạn.

1

Google đã phát hành API vị trí mới, kiểm tra liên kết này ra https://developer.android.com/training/location/index.html,

cho bạn câu hỏi, bạn cần phải thực hiện vị trí cập nhật callback để có được vị trí hiện tại. https://developer.android.com/training/location/receive-location-updates.html

+0

Tôi đã thử nghiệm API vị trí mới, bạn không cần chỉ định nhà cung cấp vị trí để nhận cập nhật vị trí nữa. LocationClient sẽ làm điều đó để bạn có thể cập nhật vị trí (như trong iOS). Trong API mới, bạn chỉ cần sử dụng LocationRequest để đặt các thông số dịch vụ như khoảng thời gian cập nhật, độ chính xác của vị trí. Sau đó, hãy để LocaitonClient truy xuất các cập nhật vị trí. – pkliang

Các vấn đề liên quan