Kiểm tra ứng dụng của tôi tại một thời điểm cụ thể cho dù người dùng có ở một vị trí cụ thể hay không. Tôi sử dụng người quản lý báo động để bắt đầu một dịch vụ mà làm cho cuộc gọi này:Android - Nhận được vị trí hiện tại một cách đáng tin cậy
locationManager.requestLocationUpdates(bestProvider, 0, 0, listener);
Và cũng kiểm tra:
locationManager.getLastKnownLocation(bestProvider);
Nhưng tôi đang gặp vấn đề khi chạy trên một thiết bị thực sự. Đối với một điều, getLastKnownLocation
rất có thể là nơi cuối cùng GPS là trên, mà có thể là bất cứ nơi nào (ví dụ, nó có thể là dặm từ vị trí hiện tại của người dùng). Vì vậy, tôi sẽ chỉ đợi requestLocationUpdates
cuộc gọi lại và nếu họ không ở đó trong vòng hai phút, hãy xóa người nghe và bỏ cuộc, phải không?
Sai, vì nếu vị trí của người dùng đã ổn định (tức là họ đã sử dụng GPS gần đây và chưa di chuyển) thì người nghe của tôi sẽ không bao giờ được gọi vì vị trí không thay đổi. Tuy nhiên, GPS sẽ chạy cho đến khi người nghe của tôi bị xóa, tháo pin ...
Cách đúng để nhận vị trí hiện tại mà không nhầm vị trí cũ cho vị trí hiện tại là gì? Tôi không quan tâm chờ đợi một vài phút.
EDIT: Có thể tôi sai về người nghe không được gọi, có thể mất nhiều thời gian hơn tôi nghĩ ... Khó nói. Tôi vẫn đánh giá cao câu trả lời dứt khoát.
Bạn có thể cung cấp một số mã ví dụ không? ví dụ: bạn sẽ đợi 2 phút hoặc như thế nào nếu người nghe vị trí không được gọi? – noah
Đoạn mã được thêm – Fedor