Ứng dụng của tôi sử dụng LocationListener để theo dõi vị trí hiện tại. Miễn là Nhà cung cấp GPS cung cấp các bản sửa lỗi thường xuyên, điều này hoạt động tốt. Tuy nhiên, tôi muốn ứng dụng của mình cảnh báo cho người dùng nếu vị trí không còn đáng tin cậy nữa vì bản sửa lỗi không còn tồn tại nữa. Do đó, tôi đã sử dụng timeCheckHandler để gọi getLastKnownLocation cứ sau vài giây.Vấn đề về Android tìm ra cách sửa lỗi GPS mới nhất gần đây là
Vấn đề của tôi là ngay cả khi các bản sửa lỗi chính xác được nhận thường xuyên, thời gian trả về bằng cách áp dụng getTime() đến vị trí được trả về bởi getLastKnownLocation thường lớn hơn thời gian hiện tại được trả về bởi System.currentTimeMillis(), thường khoảng 20 giây .
Tôi đã điều tra thêm vấn đề bằng cách thêm mã vào onLocationChanged (arg0) để ghi thời gian sửa lỗi (arg0.getTime()) và thời gian hiện tại (System.currentTimeMillis()). Một lần nữa tôi thấy sự khác biệt khoảng 20 giây.
mã hiện lần đọc như sau:
public void onLocationChanged(Location arg0) {
mapview.handleLocationChanged(mapview, arg0.getLatitude(), arg0.getLongitude(), arg0.getBearing(), arg0.getAccuracy(), "GPS fix");
addDebugNote("Fix received at time: "+Long.toString(arg0.getTime()/1000)+" Now: "+Long.toString((System.currentTimeMillis())/1000));
}
và điển hình đầu ra để tập tin gỡ lỗi của tôi đọc:
Fix received at time: 1292091908 Now: 1292091928
Tại sao mình sẽ thấy sự khác biệt này giữa thời gian sửa chữa và thời gian hệ thống hiện tại ?
Tôi có phải chấp nhận rằng sự khác biệt khoảng 20 giây là bình thường không?
Tôi đã gặp vấn đề tương tự và tôi đã thêm: 'arg0.setTime (Hệ thống.currentTimeMillis()); 'là dòng đầu tiên trong phương thức' onLocationChanged (Location arg0) 'để" sửa "dấu thời gian. Tôi không chắc chắn nếu điều này sẽ tạo ra bất kỳ tác dụng phụ sau này – ApollonDigital