Android Yer Sağlayıcıları - GPS veya Ağ Sağlayıcı?


128

Uygulamamda kullanıcının mevcut konumunu belirlemek istiyorum. Ancak bu konuda birkaç sorum var:

  1. Farklı Yer Sağlayıcılar var, hangisi en doğrusu? GPS Sağlayıcı veya Ağ Sağlayıcısı ?

  2. Mevcut sağlayıcılar ne kadar farklılık gösterir? Nasıl işliyorlar?

  3. Uygulamamda GPS işlevini kullanmaya nasıl başlayacağıma dair bana bazı kod parçacıkları veya öğreticiler sağlayabilir misiniz?


18
Yeniden açılmak için oy verin - soru iyidir ve verilen yanıt yararlıdır. Artık Sigortalı Konum Sağlayıcı olduğu için yanıt da güncel değil - soruyu açmak, yanıtın güncellenmesine izin verecektir.
Richard Le Mesurier

Yanıtlar:


281

Android'de 3 konum sağlayıcı vardır.

Onlar:

gps -> (GPS, AGPS): GPS konum sağlayıcısının adı. Bu sağlayıcı uyduları kullanarak konumu belirler. Koşullara bağlı olarak, bu sağlayıcının bir konum düzeltmesi döndürmesi biraz zaman alabilir. Android.permission.ACCESS_FINE_LOCATION iznini gerektirir.

ağ -> (AGPS, CellID, WiFi MACID): Ağ konumu sağlayıcısının adı. Bu sağlayıcı konumu baz istasyonu ve WiFi erişim noktalarının kullanılabilirliğine göre belirler. Sonuçlar, bir ağ araması aracılığıyla alınır. Android.permission.ACCESS_COARSE_LOCATION veya android.permission.ACCESS_FINE_LOCATION izinlerinden birini gerektirir.

passive -> (CellID, WiFi MACID): Aslında bir konum düzeltmesi başlatmadan konumları almak için özel bir konum sağlayıcı. Bu sağlayıcı, diğer uygulamalar veya hizmetler bunları istediğinde, konumları gerçekten kendiniz talep etmeden konum güncellemelerini pasif olarak almak için kullanılabilir. Bu sağlayıcı, diğer sağlayıcılar tarafından oluşturulan konumları döndürecektir. Android.permission.ACCESS_FINE_LOCATION iznini gerektirir, ancak GPS etkin değilse bu sağlayıcı yalnızca kaba düzeltmeler döndürebilir. Bu, Android'in bu konum sağlayıcıları olarak adlandırdığı şeydir, ancak bu şeyin çalışmasını sağlamak için temel teknolojiler, belirli donanım ve telekomünikasyon tarafından sağlanan yetenekler (ağ hizmeti) setiyle eşleştirilmiştir.

En iyi yol, önce "ağ" veya "pasif" sağlayıcıyı kullanmak ve ardından "gps" ye geri dönmek ve göreve bağlı olarak sağlayıcılar arasında geçiş yapmaktır. Bu, tüm durumları kapsar ve en düşük ortak payda hizmeti (en kötü durumda) ve mükemmel hizmet (en iyi durumda) sağlar.

görüntü açıklamasını buraya girin

Makale Referansı: Android Konum Sağlayıcıları - gps, ağ, pasif Yazar: Nazmul Idris

Kod Referansı: https://stackoverflow.com/a/3145655/28557

-----------------------Güncelleme-----------------------

Artık Android'de Fused konum sağlayıcısı var

Fused Location Provider, temeldeki konum teknolojisini akıllıca yönetir ve ihtiyaçlarınıza göre size en iyi konumu sağlar. Geliştirilmiş doğruluk ve daha düşük güç kullanımıyla, uygulamaların kullanıcının mevcut konumunu alma yollarını basitleştirir

Sigortalı konum sağlayıcı, konum getirmenin üç yolunu sağlar

  1. Son Konum: Mevcut konumu bir kez bilmek istediğinizde kullanın.
  2. Dinleyiciyi Kullanarak Konum İste: Uygulama ekranda / ön uçta olduğunda ve sürekli konum gerektirdiğinde kullanın.
  3. Bekleyen Amacı Kullanarak Konum İste: Uygulama arka planda olduğunda ve sürekli konum gerektirdiğinde kullanın.

Referanslar :

Resmi site: http://developer.android.com/google/play-services/location.html

Sigortalı konum sağlayıcı örneği: GIT: https://github.com/kpbird/fused-location-provider-example

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

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


2
Ayrıca kullanabileceğiniz Google Play Hizmetleri Fused Locator sağlayıcısının da bulunduğunu unutmayın.
Richard Le Mesurier

Kendi özel konum sağlayıcınızı yapmanız mümkün mü? android.permission.INSTALL_LOCATION_PROVIDER imzalı veya sistem, köklü cihaza bir tane yükleyebilmem gerektiği anlamına geliyor, değil mi?
JohnyTex

1
Sigortalı konum sağlayıcı yalnızca API> = 19 için kullanılabilir. Daha eski sürümleri çalıştıran cihaz için eski prosedürü izlememiz gerekiyor, değil mi?
Shobhit Puri

GPS konumu bulamazsa, GPS konumunu arayan ve bir süre sonra ağ sağlayıcısına geri dönen herhangi bir örnek kod / mevcut API var mı? veya kodda bazı zamanlayıcı mantığı ile ele alınmalı mı?
jrhamza

Pasif sağlayıcı "" "Bu sağlayıcı, diğer uygulamalar veya hizmetler bunları istediğinde konum güncellemelerini gerçekten kendiniz istemeden pasif olarak almak için kullanılabilir." ""
nurisezgin

7

GPS genellikle ağdan daha doğrudur, ancak bazen GPS kullanılamaz, bu nedenle ikisi arasında geçiş yapmanız gerekebilir.

Android geliştirici sitesine bakmak iyi bir başlangıç ​​olabilir. Kullanıcı konumunu belirlemeye ayrılmış bir bölümleri vardı ve ihtiyacınız olan tüm kod örneklerine sahipler.

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


@Noman konumunuzun enlem ve boylamını almak ister misiniz?
Nikunj Patel

@Scorpio Aslında NETWORK PROViDER & GPS PROVIDER arasında hangi seçeneğin daha iyi olduğunu bilmek istedim. . .Otra bana ahs'nin bana çok yardımcı olduğu soruma cevap olarak bir bağlantı gönder ... şimdi uygulamamda NETWORK PROVIDER kullanıyorum :-)
Noman

3

Burada bahsedilen bazı harika cevaplar var. Atooma, tranql ve Neura gibi çevrimiçi olarak mevcut olan ve Android uygulamanızla entegre edilebilen (entegrasyonu 20 dakikadan az sürer) bazı ücretsiz SDK'lar kullanmak isteyebileceğiniz başka bir yaklaşım olabilir. Size kullanıcınızın doğru konumunu vermenin yanı sıra, kullanıcılarınızın etkinlikleri hakkında size iyi bilgiler verebilir. Ayrıca bazıları pilinizin% 1'inden daha azını tüketir


1
Bahsettiğiniz SDK'ya referans alabilir miyim?
Kishore Relangi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.