2011-01-04 36 views
21

Tôi đã triển khai trình xử lý vị trí trong ứng dụng của mình sử dụng Nhà cung cấp mạng.Sử dụng GPS và Nhà cung cấp mạng cùng một lúc trong Android

Tất cả đều hoạt động tốt vì tôi muốn có vị trí nhanh chóng và với Nhà cung cấp GPS phải mất độ tuổi.

Nhưng tôi đã đến một điểm trong ứng dụng của mình nơi vị trí phải chính xác (tối đa là 5-10 mét).

Tôi đã tự hỏi liệu có thể sử dụng nhà cung cấp GPS với Nhà cung cấp mạng cùng một lúc và sau đó nhận được kết quả tốt nhất của cả hai? Và tôi cũng có thể cho tôi biết khi nhà cung cấp GPS cung cấp cho tôi Địa điểm GPS không?

Vì vậy, về cơ bản:

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 

Sẽ làm việc này với ghi đè cùng onLocationChanged()?

Và làm cách nào để biết liệu GPS có nhận được Vị trí không?

Xin cảm ơn,

Trả lời

27

Bạn chắc chắn có thể sử dụng cùng một trình nghe cho nhiều nhà cung cấp. Có thể tốt hơn khi sử dụng locationmanager.getProviders với đối tượng Criteria sau đó sắp xếp theo độ chính xác hoặc chỉ nghe tất cả. Không có nhiều sự khác biệt thực tế mặc dù.

Gọi lại onLocationChanged cung cấp cho bạn đối tượng Vị trí có phương thức getProvider() mà bạn có thể sử dụng để xác định vị trí của nó. Nó cũng có phương thức getAccuracy(), vì vậy bạn cũng có thể sắp xếp các bản sửa lỗi gần đây của mình theo độ chính xác.

+0

tnx cho câu trả lời của bạn! – Galip

2

Lý tưởng nhất, nếu bạn không quan tâm đến việc sử dụng pin, sau đó nó hoàn toàn tốt để sử dụng cả hai nhà cung cấp. Như Daren đã giải thích, bạn có thể lọc các tọa độ bằng cách sử dụng getProvider() và getAccuracy().

http://blog.shinetech.com/2011/10/14/a-good-look-at-android-location-data/

+0

Thêm điều này làm nhận xét về câu trả lời của daren sẽ rõ ràng hơn – etienne

+2

Điều này thực sự cần phải là một nhận xét được thêm vào câu trả lời từ Daren. –

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