Nhà cung cấp vị trí Android - GPS hoặc Nhà cung cấp mạng?


128

Trong ứng dụng của mình, tôi muốn xác định vị trí hiện tại của người dùng. Tuy nhiên tôi có một vài câu hỏi về vấn đề này:

  1. Có nhiều Nhà cung cấp địa điểm khác nhau, cái nào là chính xác nhất? Các nhà cung cấp GPS hoặc các nhà cung cấp mạng ?

  2. Những nhà cung cấp có sẵn khác nhau bao xa? Làm thế nào để họ hoạt động?

  3. Bạn có thể vui lòng cung cấp cho tôi một số đoạn mã hoặc hướng dẫn về cách bắt đầu thực hiện chức năng GPS trong ứng dụng của tôi không?


18
Bình chọn để mở lại - câu hỏi là tốt và câu trả lời được cung cấp là hữu ích. Câu trả lời cũng đã lỗi thời vì hiện tại đã có Nhà cung cấp vị trí hợp nhất - mở câu hỏi sẽ cho phép nó được cập nhật.
Richard Le Mesurier

Câu trả lời:


281

Có 3 nhà cung cấp vị trí trong Android.

Họ đang:

gps -> (GPS, AGPS): Tên của nhà cung cấp vị trí GPS. Nhà cung cấp này xác định vị trí bằng cách sử dụng các vệ tinh. Tùy thuộc vào điều kiện, nhà cung cấp này có thể mất một lúc để trả lại vị trí sửa chữa. Yêu cầu sự cho phép của ERIC.ACCESS_FINE_LOCATION.

mạng -> (AGPS, CellID, WiFi MACID): Tên của nhà cung cấp vị trí mạng. Nhà cung cấp này xác định vị trí dựa trên tính khả dụng của các điểm truy cập WiFi và tháp di động. Kết quả được lấy bằng phương pháp tra cứu mạng. Yêu cầu một trong hai quyền của ERIC.ACCESS_COARSE_LOCATION hoặc ERIC.ACCESS_FINE_LOCATION.

thụ động -> (CellID, WiFi MACID): Nhà cung cấp vị trí đặc biệt để nhận vị trí mà không thực sự bắt đầu sửa lỗi vị trí. Nhà cung cấp này có thể được sử dụng để nhận thụ động cập nhật vị trí khi các ứng dụng hoặc dịch vụ khác yêu cầu chúng mà không thực sự yêu cầu vị trí đó. Nhà cung cấp này sẽ trả lại các vị trí được tạo bởi các nhà cung cấp khác. Yêu cầu sự cho phép của ERIC.ACCESS_FINE_LOCATION, mặc dù nếu GPS không được bật, nhà cung cấp này chỉ có thể trả về các bản sửa lỗi thô. Đây là những gì Android gọi các nhà cung cấp vị trí này, tuy nhiên, các công nghệ cơ bản để làm cho công cụ này hoạt động được ánh xạ tới tập hợp cụ thể của phần cứng và khả năng cung cấp telco (dịch vụ mạng).

Cách tốt nhất là trước tiên hãy sử dụng nhà cung cấp mạng mạng Cameron hoặc nhà bị động thụ động, và sau đó là dự phòng trên gps gps, và tùy theo nhiệm vụ, hãy chuyển đổi giữa các nhà cung cấp. Điều này bao gồm tất cả các trường hợp và cung cấp dịch vụ mẫu số chung thấp nhất (trong trường hợp xấu nhất) và dịch vụ tuyệt vời (trong trường hợp tốt nhất).

nhập mô tả hình ảnh ở đây

Bài viết tham khảo: Nhà cung cấp vị trí Android - gps, mạng, thụ động Bởi Nazmul Idris

Tham chiếu mã: https://stackoverflow.com/a/3145655/28557

----------------------- Cập nhật -----------------------

Bây giờ Android có nhà cung cấp vị trí hợp nhất

Nhà cung cấp vị trí hợp nhất quản lý thông minh công nghệ vị trí cơ bản và cung cấp cho bạn vị trí tốt nhất theo nhu cầu của bạn. Nó đơn giản hóa các cách để ứng dụng có được vị trí hiện tại của người dùng với độ chính xác được cải thiện và mức sử dụng năng lượng thấp hơn

Nhà cung cấp vị trí hợp nhất cung cấp ba cách để tìm nạp vị trí

  1. Vị trí cuối cùng: Sử dụng khi bạn muốn biết vị trí hiện tại một lần.
  2. Yêu cầu Vị trí bằng Trình nghe: Sử dụng khi ứng dụng ở trên màn hình / lối vào và yêu cầu vị trí tiếp tục.
  3. Yêu cầu Vị trí bằng cách sử dụng Ý định chờ xử lý: Sử dụng khi ứng dụng ở chế độ nền và yêu cầu vị trí tiếp tục.

Người giới thiệu :

Trang web chính thức: http://developer.android.com/google/play-service/location.html

Ví dụ về nhà cung cấp vị trí hợp nhất: GIT: https://github.com/kpbird/fuse-location-provider-example

http://blog.lprice.co.uk/fuse-location-provider

-------------------------------------------------- ------


2
Lưu ý rằng cũng có nhà cung cấp Trình định vị Hợp nhất Dịch vụ Google Play mà người ta có thể sử dụng.
Richard Le Mesurier

Có thể làm cho nhà cung cấp vị trí tùy chỉnh của riêng bạn? ERIC.INSTALL_LOCATION_PROVIDER đã được ký hoặc hệ thống có nghĩa là tôi sẽ có thể cài đặt một thiết bị đã root, không?
JohnyTex

1
Nhà cung cấp vị trí hợp nhất chỉ khả dụng cho API> = 19. Chúng tôi vẫn cần tuân theo quy trình cũ cho thiết bị chạy các phiên bản cũ hơn, phải không?
Shobhit Puri

Có mã mẫu / API hiện tại nào tìm vị trí GPS và quay lại nhà cung cấp mạng sau một thời gian, nếu GPS không tìm nạp được vị trí không? hoặc nó nên được xử lý trong mã bởi một số logic hẹn giờ?
jrhamza 30/03/2015

Nhà cung cấp thụ động "" "Nhà cung cấp này có thể được sử dụng để nhận thụ động cập nhật vị trí khi các ứng dụng hoặc dịch vụ khác yêu cầu họ mà không thực sự yêu cầu vị trí đó." ""
Nurisezgin 8/8/2015

7

GPS thường chính xác hơn mạng nhưng đôi khi GPS không khả dụng, do đó bạn có thể cần phải chuyển đổi giữa hai mạng.

Một khởi đầu tốt có thể là nhìn vào trang web dev của Android. Họ đã có một phần dành riêng để xác định vị trí người dùng và nó có tất cả các mẫu mã bạn cần.

http://developer.android.com/guide/topics/location/obtaining-user-location.html


@Noman bạn có muốn lấy kinh độ và vĩ độ vị trí của mình không?
Nikunj Patel

@Scorpio tôi thực sự muốn biết tùy chọn nào tốt hơn trong số CUNG CẤP & CUNG CẤP GPS. . .Otra gửi cho tôi một liên kết như một câu trả lời cho câu hỏi của tôi rằng ahs đã giúp tôi rất nhiều ... bây giờ tôi đang sử dụng NETWORK PROVIDER trong ứng dụng của mình :-)
Noman

3

Có một số câu trả lời tuyệt vời được đề cập ở đây. Một cách tiếp cận khác mà bạn có thể thực hiện là sử dụng một số SDK miễn phí có sẵn trực tuyến như Atooma, tranql và Neura, có thể được tích hợp với ứng dụng Android của bạn (chỉ mất chưa đến 20 phút để tích hợp). Cùng với việc cung cấp cho bạn vị trí chính xác của người dùng, nó cũng có thể cung cấp cho bạn thông tin chi tiết về hoạt động của người dùng. Ngoài ra, một số trong số chúng tiêu thụ ít hơn 1% pin của bạn


1
Tôi có thể lấy tài liệu tham khảo cho sdk mà bạn đang đề cập không?
Kishore Relangi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.