2011-10-04 18 views
5

Chúng tôi có một ứng dụng dựa trên hành động của người dùng cố gắng sửa chữa vị trí. Nó lắng nghe cả trên GPS và mạng và có ma trận quyết định dựa trên thời gian/độ chính xác để xác định thời điểm dừng nghe và những gì cần sửa.Tại sao người quản lý vị trí trả lại các bản sửa lỗi vị trí cũ bằng dấu thời gian mới của gettime?

Chúng tôi đã nhận thấy, nhân dịp, một hành vi rất lạ. Chúng tôi sử dụng cách cổ điển để xem bao nhiêu tuổi sửa chữa là, như vậy:

long age = now - newLocation.getTime(); 
if(age >= prefs.getLocationMaxAge()){ 
    Log.d(TAG, "location too old."); 
    return; 
} 

Nhưng đôi khi, những location.getTime trở về từ hệ điều hành có một tuổi có lẽ 15-20 giây, theo dấu thời gian quay trở lại, mặc dù chúng tôi có thể chắc chắn rằng nó rất cũ. Ví dụ, nếu sửa chữa kinh độ/vĩ độ là từ một vị trí mà chiếc điện thoại đã được vào 30 phút trước!

Dường như điều này xảy ra cả từ Wi-Fi và mạng, nhưng không xảy ra với GPS. Đối với tôi, điều này hoàn toàn điên rồ. Có ai khác nhìn thấy điều này và có cách nào xung quanh nó?

Chúng tôi đã nhận nó trên một vài điện thoại khác nhau, gần đây nhất là Samsung Galaxy S II.

Trợ giúp sẽ cực kỳ được hoan nghênh.

EDIT: Để thực sự rõ ràng, sự cố là cuộc gọi lại "được gọi lại" được hệ điều hành gọi với vị trí có dấu thời gian có thể là một vài giây, khi tôi biết chắc chắn rằng kinh độ/vĩ độ trong bản sửa lỗi "mới" là nơi điện thoại không hoạt động trong ít nhất 30 phút.

này làm cho nó rất khó để xác định chính xác nơi mà các thiết bị cầm tay nó ...

Trả lời

0

Nó dường như xảy ra cả Wi-Fi và mạng, nhưng không phải GPS

Điều này có vẻ công bằng , bởi vì trong Wi-Fi và mạng lưới dựa trên trang web dựa trên tam giác, độ chính xác là rất xấu. Có thể họ đang sử dụng các vị trí được lưu trong bộ nhớ cache có từ 30 phút trước. Trừ khi bạn không thay đổi trang web di động của mình hoặc chuyển sang một tòa nhà khác để có thể phát hiện ra APs mới, tôi e rằng bạn sẽ chỉ nhận được các vị trí được lưu trong bộ nhớ cache. Nếu bạn muốn các địa điểm mới sử dụng nhà cung cấp GPS.

+1

Tôi nghĩ rằng bạn đang bỏ lỡ quan điểm của mình. Vị trí được lưu trong bộ nhớ cache sẽ ổn, nếu dấu thời gian của vị trí sẽ phản ánh điều này. Nhưng việc lưu trữ, sửa lỗi cũ và áp dụng dấu thời gian hiện tại là điên rồ. tôi sẽ cập nhật câu hỏi của mình thậm chí còn rõ ràng hơn. – Mathias

+0

Cảm ơn bạn đã xóa nó; Tôi đã tìm thấy [thủ phạm] (http://www.netmite.com/android/mydroid/frameworks/base/location/java/com/android/internal/location/LocationCollector.java) – Reno

+0

HI guyz, related to this tôi đã nhận vị trí thích hợp nhưng khi tôi cố gắng tìm vị trí cũ như thế nào bằng cách sử dụng - >> long age = System.currentTimeMillis() -location.getTime(); và phụ thuộc vào giá trị này tôi tính toán vị trí của tôi như thế nào nhưng vấn đề là đôi khi tôi nhận được giá trị âm (tuổi). không thể hiểu tại sao vì tuổi đó sẽ không bao giờ có âm – Anjan

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