2011-06-22 44 views
9

LocationManager#requestLocationUpdates cho phép bạn chuyển vào tham số minTime và minDistance. Tôi đang gặp khó khăn trong việc quyết định xem những con số này nên là gì và có thể đánh giá cao một số hướng dẫn.Làm cách nào để quyết định khoảng thời gian nào cần sử dụng cho requestLocationUpdates?

Ứng dụng của chúng tôi không phải là ứng dụng điều hướng từng chặng; Tôi chỉ muốn hiển thị 10 điểm quan tâm gần nhất. Vì tôi đang hiển thị 10 chiếc gần nhất, chúng có thể hơi cũ, nhưng nếu người dùng đang ở trong một chiếc xe đang di chuyển, tôi muốn/cần phải cập nhật chúng khá thường xuyên để tránh sự ảm đạm.

Tôi tưởng tượng rất nhiều người ở cùng một vị trí yêu cầu mơ hồ: "Tôi không muốn dữ liệu quá cũ, nhưng tôi không muốn lãng phí pin". Làm thế nào tôi có thể biến những yêu cầu mơ hồ này thành các con số cụ thể?

+1

Đó là câu trả lời ở đây đã bị lỗi thời - hiện tại [minTime được ưu tiên] (http://stackoverflow.com/a/16753705/281545) - do đó, không còn gì liên quan nữa. –

Trả lời

3
***<Edit>*** 
As of JellyBean, the criteria is (minTime & minDistance), so it has 
to satisfy both to return a location. 
***</Edit>*** 

Dựa trên vấn đề của bạn, âm thanh với tôi như tham số minTime không liên quan.

Điều bạn thực sự cần phải lo lắng là minDistance, để nếu người dùng đang ở trong một phương tiện di chuyển nhanh, nó sẽ theo kịp.

Nếu một người đang lái xe 60 MPH, chúng di chuyển khoảng 27 mét mỗi giây.

Xét với tiêu chí này ... tôi sẽ nói để sử dụng:

minTime = 60000 // cập nhật mỗi 60 giây
minDistance = 90 // trong một phương tiện di chuyển nhanh, nó sẽ cập nhật khoảng một lần mỗi 3 giây

+0

Bạn đã tạo ra 60000 bằng cách nào? Tại sao không nhiều hơn? Hoặc ít hơn? –

+0

Khá ngẫu nhiên. Không có số "đúng", nhưng một lần mỗi phút sẽ không giết pin, và ít nhất sẽ giữ kết quả của bạn phần nào trên mục tiêu. Giá trị quan trọng hơn là khoảng cách. Những gì bạn cần phải quyết định là - Bạn có thể đi được bao xa trước khi bạn muốn dữ liệu của mình được làm mới? Một dặm? nửa dặm? hơn? ít hơn? – Matt

+1

Xin lỗi, nhưng bạn phải chỉnh sửa điều này - bây giờ [minTime được ưu tiên] (http://stackoverflow.com/a/16753705/281545) - vì vậy nó không phải là tất cả không liên quan nữa. –

3

Nó đã được mô tả độc đáo trong requestLocationUpdates docs

tần suất thông báo hoặc địa điểm mới có thể được kiểm soát bằng cách sử dụng minTime và tinh thần thông số istance. Nếu minTime lớn hơn 0, thì Vị trí Người quản lý có thể có khả năng nghỉ ngơi cho minTime mili giây giữa cập nhật vị trí để tiết kiệm điện. Nếu minDistance lớn hơn 0, một vị trí sẽ chỉ được phát nếu thiết bị di chuyển theo đồng hồ đo minDistance. Để được thông báo thường xuyên như có thể, đặt cả thông số về 0. dịch vụ nền nên cẩn thận về việc thiết một cách đầy đủ cao minTime để các thiết bị không tiêu thụ quá nhiều năng lượng bằng cách giữ GPS hoặc không dây radio trên tất cả thời gian . Cụ thể, các giá trị dưới 60000ms không được khuyến nghị.

+0

"giá trị dưới 60000ms không được khuyến nghị" Điều đó có đúng với các dịch vụ nền trước hay chỉ các dịch vụ nền? (Tôi không phải là một dịch vụ nền.) Giá trị nào nên cho các dịch vụ tiền cảnh không cần tần số tối đa, như tôi? –

+0

của nó cho cả dịch vụ nền và dịch vụ nền trước. – Sujit

+1

trích dẫn từ tài liệu không còn giá trị –

1

Tôi có thể đề xuất ý tưởng tốt hơn là, ban đầu yêu cầu cập nhật với khoảng thời gian lớn hơn một chút và nhận được vị trí. Bây giờ hãy kiểm tra xem khoảng cách giữa các vị trí liên tiếp có lớn hơn khoảng cách tối thiểu để phân biệt các vị trí gần hơn hay không, thay đổi khoảng thời gian cập nhật yêu cầu của bạn thành giá trị thấp hơn. Tương tự, nếu trong khoảng thời gian thấp hơn, khoảng cách bạn tính toán thấp hơn nhiều cho biết người dùng không đi qua xe sau đó cập nhật khoảng thời gian với giá trị lớn hơn. Để cập nhật khoảng thời gian, bạn phải hủy đăng ký người nghe trước đó và sau đó tái lập lại với giá trị mới.

0

Đối với vấn đề của bạn trong tầm tay, hãy xem PASSIVE_PROVIDER. Về cơ bản nó sẽ giúp bạn nhận được thông tin cập nhật khi bất kỳ ứng dụng nào khác có thể yêu cầu chúng.Vì vậy, bạn có thể sử dụng điều này kết hợp với nhà cung cấp khác.

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