2010-11-24 10 views
7

Ho creato un servizio e acquisisco i dati sulla posizione dell'utente in modo che possa mostrare ai miei utenti i luoghi nelle vicinanze. Desidero che questo servizio tenga traccia in base alla rete oltre al GPS per 2 motivi: 1) Il GPS potrebbe non essere abilitato. 2) Il GPS impiega un po 'di tempo per collegarsi al mio telefono di prova.Problema di richiesta degli aggiornamenti di posizione tramite rete

Quando il mio servizio esegue la seguente riga:

mNETEnabled = mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

ottengo il seguente errore:

11-24 14:00:41.693: ERROR/LocationManagerService(51): isProviderEnabled got exception: 
11-24 14:00:41.693: ERROR/LocationManagerService(51): java.lang.IllegalArgumentException: provider=network 
11-24 14:00:41.693: ERROR/LocationManagerService(51):  at com.android.server.LocationManagerService._isProviderEnabledLocked(LocationManagerService.java:1385) 
11-24 14:00:41.693: ERROR/LocationManagerService(51):  at com.android.server.LocationManagerService.isProviderEnabled(LocationManagerService.java:1359) 

Perché è questo? Mi manca un permesso dal Manifesto? Ho ACCESS_COARSE_LOCATION nel mio manifest.

risposta

2

Use wireless networks impostazione nelle impostazioni delle preferenze Security & location. È abilitato?

+0

Questo accade anche sul telefono; che non è connesso a un router wireless. Ma sì, è controllato. – Andrew

+0

Stai verificando se il provider èProviderEnabled? – techiServices

+0

Oh, whoops, ho fatto un errore. L'errore si verifica sulla chiamata isProviderEnabled. Aggiornerò il post principale per riflettere questo. – Andrew

0

Potrebbe essere che il Momento non ha AGPS (che sarebbe strano). Ma puoi verificare usando LocationManager.getAllProviders() e vedere quali ritornano. Puoi anche usare semplicemente LocationManager.getBestProvider (Criteria criteria, boolean enabledOnly)'.

+0

Il mio codice usato per lavorare sui miei momenti; quindi devo supporre che ci sia un nuovo bug nel mio codice o un nuovo bug nell'SDK. Al momento non ho i miei telefoni su di me, ma chiamare getAllProviders() sull'emulatore restituisce una lista contenente solo "gps". Che questo sia normale o no, non lo so. – Andrew

+0

Ho provato su un emulatore che esegue 2.0 e non ottengo l'errore (ero già in fase di test su 2.1) – Andrew

14

stai correndo su emulatore a livello 13 o superiore? Android issue 19857

+1

Ho questo problema sull'emulatore ICS. C'è qualche soluzione? –

+2

Per risolvere il problema, registrarsi per aggiornamenti come questo: for (Fornitore di stringhe: locationManager.getAllProviders()) {locationManager.requestLocationUpdates (provider, 0, 0, this); } –

Problemi correlati