2013-05-31 22 views
24

Herhangi bir sağlayıcı LocationManager'da kullanılabilir olup olmadığını belirleyebilir, ancak google oyun hizmetleri konum api ile yapılabilir mi?android hizmetlerinin bulunduğu yer hizmetleri etkinleştirme play hizmetleri konum api

Hiçbir şey etkinleştirilmediğinde, aslında "konumuma erişme" özelliği devre dışı olduğunda, tüm API çağrıları (connect(), requestLocationUpdates()) başarılı olur, ancak onLocationChanged() öğesini hiçbir zaman alamazsınız.

Hem LocationManager'ı hem de LocationClient'i kullanmak zorunda kaldığı için saçma gibi görünüyor.

ne ihtiyacım onLocationChanged (0 denilen olsun asla olacağını bilmek için bir yol sanırım.

cevap

26

Ben dokümanlar taradık ve ayrıca konum eğer algılamak için LocationClient kullanmak için herhangi bir yol bulmuş değil hizmetlerin etkin. onConnected, onDisconnected ve onConnectionFailed Yer hizmetleri etkinleştirilmiş olsun ya da olmasın ile bağlantılı olduğu görünmüyor.

Şu anda LocationClient kullanarak konum isteklerini yapıyorum ama yer olmadığını algılamak için eski locationManager.isProviderEnabled(String provider) yöntemi kullanıyorum Hizmetler etkin, bu benim için en iyisi, çünkü LocationClient bir yol sağlasa bile, d GPS ve Network arasındaki iletişim ve gerçekten kullanıcının GPS'i etkinleştirmesini isteyebiliyorum.

uygulayın ve bir LocationCallback kayıt ve onLocationAvailability() geçersiz kılabilir veya uygunluk durumunu almak için LocationServices.FusedLocationApi.getLocationAvailability() çağırır:

if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
    //GPS Provider disabled 
    return false; 
} 
+2

Teşekkürler - belki google'dan birileri bunu görecek ve düzeltecek – user1248322

+0

Bunu da çok tuhaf buluyorum! – Bear

+5

'if (lm.isProviderEnabled (LocationManager.GPS_PROVIDER) || lm.isProviderEnabled (LocationManager.NETWORK_PROVIDER)) {}' Bence en eksiksiz yaklaşımdır. – Diolor

12

artık Google Hizmetlerini 7.3.0 Çal beri konum güncellemeleri mevcut olup olmadığını tespit etmek için güvenilir bir yol yoktur. Yanlışsa, cihaz yapılandırmasında bir değişiklik olmadıkça konum güncellemelerinin teslim edilmeyeceğini biliyorsunuzdur.

Bu yöntem aslında oldukça akıllıdır: örneğin, WiFi devre dışı bırakılmışsa veya aygıt uçak modundaysa, WiFi konum bilgisi olan bir cihazda hiçbir konum güncellemesinin teslim edilmeyeceğini belirleyebilir, Ağ konum sağlayıcısı olsa bile her zaman etkindir. İhtiyacınız konum ayarları için sormak ve sonra etkin olup olmadığını sorgulamak veya etkinleştirmek için kullanıcı yöneltebileceğiniz

+0

Doc diyor ki: Yer verilerinin kullanılabilirliğini döndürür. IsLocationAvailable() öğesi true değerini döndürdüğünde, getLastLocation (GoogleApiClient) tarafından döndürülen konum, etkin LocationRequests tarafından belirtilen ipuçları içinde makul bir şekilde güncel olacaktır. Konum hizmetlerinin etkinleştirilip etkinleştirilmediğine bağlı olarak, bazı konum verilerinin mevcut olup olmadığını gösteren bilgilerim. – lujop

İlgili konular