2017-12-20 108 views
10

Tôi đã làm việc và thử nghiệm trên các cập nhật vị trí nền sử dụng GoogleApiClient cho các bản cập nhật dựa trên thời gian và chuyển vị trí. Khi thử nghiệm và phân tích trong vài ngày, tôi đã tìm ra một số biến thể trong đầu ra mà tôi không mong đợi.Cập nhật vị trí nền bằng cách sử dụng Google API - Nhà cung cấp vị trí hợp nhất không chính xác

  1. Trong khi sử dụng setIntervalsetFastestInterval để cập nhật Interval dựa, nói rằng tôi đã thiết lập một Interval như 15 phútNhanh Interval như 10 phút, 90% thời gian tôi nhận được thông tin cập nhật trong khoảng thời gian dự kiến ​​(10 đến 15 phút). Nhưng đôi khi tôi nhận thấy rằng các bản cập nhật mất nhiều thời gian hơn so với khoảng thời gian quy định, như, sự khác biệt là khoảng 30 phút và 60 phút. Bất kỳ ý tưởng về lý do tại sao sự khác biệt?

  2. Trong khi sử dụng setMinimumDisplacement để cập nhật cách dựa, nói rằng tôi đã thiết lập một Displacement như 200 mét, tôi nhận được thông tin cập nhật chỉ trên điểm dừng (Trong khi đi du lịch nó không đưa ra bản cập nhật ngay cả khi nó dài hơn 200 mét) từ 200 mét trở lên. Đây có phải là cách nó hoạt động bình thường không?

Tôi đang sử dụng PendingIntent loại yêu cầu vị trí để nhận cập nhật vị trí trong BroadcastReceiver cho cập nhật vị trí trong nền.

fusedLocationProviderClient.requestLocationUpdates(locationRequest, pendingIntent); 

Trong khi kiểm tra, các Location ServicesONChế độ vị tríHIGH_ACCURACY.

+1

Tôi không thể nói hành vi bình thường nhưng tôi đã thấy các vấn đề tương tự như của bạn. Thành thật mà nói, câu trả lời là những gì @Mitesh Vanaliya đã trích dẫn từ tài liệu, ** Tất cả các yêu cầu vị trí được coi là gợi ý và bạn có thể nhận được các vị trí ít chính xác hơn và nhanh hơn/chậm hơn so với yêu cầu **. Hoặc, để diễn giải, "Bạn có thể cho chúng tôi biết bạn muốn gì và đôi khi chúng tôi sẽ làm điều đó, nhưng cuối cùng chúng tôi sẽ làm gì và khi nào chúng tôi muốn" – Gary99

+0

Nếu bạn không muốn sử dụng 'FusedLocationApi' được đề xuất của Google, bạn có thể sử dụng Trình quản lý vị trí cũ hơn để có nhiều quyền kiểm soát hơn cho chính mình. [Ở đây] (https://developer.android.com/guide/topics/location/strategies.html) là một số thông tin về cách thực hiện điều đó. – Gary99

+0

Tôi không muốn sử dụng 'LocationListener' vì nó sẽ bị chấm dứt khi ứng dụng bị chấm dứt. Tôi muốn cập nhật vị trí ngay cả khi ứng dụng bị chấm dứt, đó là lý do tại sao tôi đã sử dụng phiên bản 'PendingIntent' của' requestLocationUpdates' của 'FendingLocationProviderClient'. Các bản cập nhật mà tôi nhận được từ 'setInterval' tốt hơn nhiều so với' setMinimumDisplacement' vì các vị trí từ _setInterval_ là chính xác hơn so với _setMinimumDisplacement_. – Joshua

Trả lời

2

Vui lòng tham khảo tài liệu để có được hành vi thích hợp của API LocationRequest.

LocationRequest Api documentation

Từ tài liệu này:

  • Các ứng dụng không thể xác định các nguồn vị trí chính xác, chẳng hạn như GPS, được sử dụng bởi các LocationClient. Trên thực tế, hệ thống có thể có nhiều nguồn vị trí (nhà cung cấp) đang chạy và có thể kết hợp các kết quả từ nhiều nguồn vào một đối tượng Vị trí duy nhất
  • Yêu cầu vị trí từ các ứng dụng với ACCESS_COARSE_LOCATION và không được tự động điều chỉnh trong khoảng thời gian chậm hơn và đối tượng vị trí sẽ bị xáo trộn để chỉ hiển thị mức độ chính xác thô.
  • Mọi yêu cầu vị trí được coi là gợi ý và bạn có thể nhận vị trí có hơn/kém chính xác hơn, và nhanh hơn/chậm hơn so với yêu cầu

Để biết thêm chi tiết mô tả đầy đủ tài liệu đọc từ trên cao liên kết.

Hy vọng giải thích này có thể giúp bạn.

+0

Cảm ơn lời giải thích. Tôi đã biết một số thông tin về nguồn và độ chính xác của vị trí. Tôi mong đợi một số thông tin thêm về ** điểm thứ hai ** trong câu hỏi, như, nó có hoạt động bình thường không? hoặc tôi phải thực hiện thêm một số mã cho nó. – Joshua

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