Penyedia Lokasi Android - Penyedia GPS atau Jaringan?


128

Dalam aplikasi saya, saya ingin menentukan lokasi pengguna saat ini. Namun saya punya beberapa pertanyaan dalam hal ini:

  1. Ada beberapa Penyedia Lokasi yang berbeda, mana yang paling akurat? The GPS Provider atau Penyedia Jaringan ?

  2. Sejauh mana perbedaan penyedia yang tersedia? Bagaimana fungsinya?

  3. Bisakah Anda memberi saya beberapa cuplikan kode atau tutorial tentang cara memulai menerapkan fungsionalitas GPS di aplikasi saya?


18
Voting untuk dibuka kembali - pertanyaannya bagus & jawaban yang diberikan berguna. Jawabannya juga ketinggalan zaman karena sekarang ada Penyedia Lokasi yang Menyatu - membuka pertanyaan akan memungkinkannya diperbarui.
Richard Le Mesurier

Jawaban:


281

Ada 3 penyedia lokasi di Android.

Mereka:

gps -> (GPS, AGPS): Nama penyedia lokasi GPS. Penyedia ini menentukan lokasi menggunakan satelit. Tergantung pada kondisinya, penyedia ini mungkin perlu waktu untuk mengembalikan perbaikan lokasi. Membutuhkan izin android.permission.ACCESS_FINE_LOCATION.

network -> (AGPS, CellID, WiFi MACID): Nama penyedia lokasi jaringan. Penyedia ini menentukan lokasi berdasarkan ketersediaan menara seluler dan titik akses WiFi. Hasil diambil melalui pencarian jaringan. Membutuhkan salah satu dari izin android.permission.ACCESS_COARSE_LOCATION atau android.permission.ACCESS_FINE_LOCATION.

pasif -> (CellID, WiFi MACID): Penyedia lokasi khusus untuk menerima lokasi tanpa benar-benar melakukan perbaikan lokasi. Penyedia ini dapat digunakan untuk secara pasif menerima pembaruan lokasi ketika aplikasi atau layanan lain meminta mereka tanpa benar-benar meminta lokasi itu sendiri. Penyedia ini akan mengembalikan lokasi yang dihasilkan oleh penyedia lain. Membutuhkan izin android.permission.ACCESS_FINE_LOCATION, meskipun jika GPS tidak diaktifkan penyedia ini mungkin hanya mengembalikan perbaikan kasar. Inilah yang disebut Android penyedia lokasi ini, namun, teknologi yang mendasari untuk membuat pekerjaan ini dipetakan ke perangkat keras dan kemampuan telekomunikasi yang disediakan khusus (layanan jaringan).

Cara terbaik adalah dengan menggunakan penyedia "jaringan" atau "pasif" terlebih dahulu, dan kemudian mundur pada "gps", dan tergantung pada tugasnya, beralihlah antara penyedia. Ini mencakup semua kasus, dan menyediakan layanan common denominator terendah (dalam kasus terburuk) dan layanan hebat (dalam kasus terbaik).

masukkan deskripsi gambar di sini

Referensi Artikel: Penyedia Lokasi Android - gps, jaringan, pasif Oleh Nazmul Idris

Referensi Kode: https://stackoverflow.com/a/3145655/28557

-----------------------Memperbarui-----------------------

Sekarang Android memiliki penyedia lokasi Fused

Penyedia Lokasi Fused mengelola teknologi lokasi yang mendasarinya dan memberi Anda lokasi terbaik sesuai dengan kebutuhan Anda. Ini menyederhanakan cara aplikasi untuk mendapatkan lokasi pengguna saat ini dengan akurasi yang ditingkatkan dan penggunaan daya yang lebih rendah

Penyedia lokasi menyatu menyediakan tiga cara untuk mengambil lokasi

  1. Lokasi Terakhir: Gunakan ketika Anda ingin mengetahui lokasi saat ini sekali.
  2. Minta Lokasi menggunakan Pendengar: Gunakan saat aplikasi ada di layar / tampilan depan dan meminta lokasi berlanjut.
  3. Minta Lokasi menggunakan Pending Intent: Gunakan saat aplikasi di latar belakang dan membutuhkan lokasi yang berkelanjutan.

Referensi :

Situs resmi: http://developer.android.com/google/play-services/location.html

Contoh penyedia lokasi yang menyatu: GIT: https://github.com/kpbird/fused-location-provider-example

http://blog.lemberg.co.uk/fused-location-provider

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


2
Perhatikan bahwa ada juga penyedia Locator Fused Google Play Services yang dapat digunakan.
Richard Le Mesurier

Apakah mungkin membuat penyedia lokasi kustom Anda sendiri? android.permission.INSTALL_LOCATION_PROVIDER ditandatangani atau sistem artinya saya harus dapat menginstalnya di perangkat yang di-rooting, bukan?
JohnyTex

1
Penyedia lokasi yang menyatu hanya tersedia untuk API> = 19. Kita masih harus mengikuti prosedur lama untuk perangkat yang menjalankan versi yang lebih lama, kan?
Shobhit Puri

apakah ada kode sampel / API yang ada yang mencari lokasi GPS dan kembali ke penyedia jaringan setelah beberapa waktu, jika GPS gagal mengambil lokasi? atau haruskah itu ditangani dalam kode oleh logika timer?
jrhamza

Penyedia pasif "" "Penyedia ini dapat digunakan untuk secara pasif menerima pembaruan lokasi ketika aplikasi atau layanan lain meminta mereka tanpa benar-benar meminta lokasi sendiri." ""
nurisezgin

7

GPS umumnya lebih akurat daripada jaringan tetapi terkadang GPS tidak tersedia, karena itu Anda mungkin perlu beralih di antara keduanya.

Awal yang baik mungkin untuk melihat situs pengembang Android. Mereka memiliki bagian yang didedikasikan untuk menentukan lokasi pengguna dan memiliki semua sampel kode yang Anda butuhkan.

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


@Noman Anda ingin mendapatkan lokasi bujur dan lintang Anda?
Nikunj Patel

@ Scorpio sebenarnya saya ingin tahu opsi mana yang lebih baik di antara JARINGAN PENYEDIA & GPS PENYEDIA. . .Otra mengirimi saya tautan sebagai jawaban untuk pertanyaan saya bahwa ahs membantu saya banyak ... sekarang saya menggunakan PENYEDIA JARINGAN di aplikasi saya :-)
Noman

3

Ada beberapa jawaban bagus yang disebutkan di sini. Pendekatan lain yang dapat Anda ambil adalah menggunakan beberapa SDK gratis yang tersedia online seperti Atooma, tranql dan Neura, yang dapat diintegrasikan dengan aplikasi Android Anda (dibutuhkan kurang dari 20 menit untuk berintegrasi). Seiring dengan memberi Anda lokasi akurat dari pengguna Anda, itu juga dapat memberi Anda wawasan yang baik tentang aktivitas pengguna Anda. Juga, beberapa dari mereka mengkonsumsi kurang dari 1% dari baterai Anda


1
dapatkah saya mendapatkan referensi ke SDK yang Anda sebutkan?
Kishore Relangi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.