9

Sto sviluppando un'app utilizzando Fused Location Provider. Ho un dubbio. Per ottenere la posizione a intervalli regolari utilizza requestLocationUpdates(). Ma da quale fonte si ottiene la posizione sia da Wi-Fi o GPS o rete. Nella mia app, ottiene la posizione a intervalli regolari solo quando Wi-Fi è attivo. Quando il Wi-Fi è in stato OFF, non è possibile ottenere la posizione (si suppone che ottenga la posizione da un'altra fonte o GPS o Rete. Ma non ottiene mai la posizione, oppure devo scrivere ascoltatori per GPS e Rete). Non so qual è il problema. Qualcuno può aiutarmi.Fornitore di posizione fuso in Android

E, se funziona solo quando tutti i provider (Wifi, GPS, Rete) sono disponibili o altro.

public void checkPlay(){ 

    int resp = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); 
    if (resp == ConnectionResult.SUCCESS) { 
     locationClient = new LocationClient(this, this, this); 
     locationClient.connect(); 
    } else { 
     Toast.makeText(this, "Google Play Service Error " + resp, 
       Toast.LENGTH_LONG).show(); 

    } 
} 


public void onConnected(Bundle arg0) { 
    // TODO Auto-generated method stub 


    if (locationClient != null && locationClient.isConnected()) { 

     locationRequest = LocationRequest.create(); 
     locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
     locationRequest.setInterval(100); 
     locationClient.requestLocationUpdates(locationRequest, this); 

    } 
} 

     public void onLocationChanged(Location location) { 
    // TODO Auto-generated method stub 
    try { 
     if (location != null) { 
      lat = location.getLatitude(); 
          long = location.getLongitude(); 
     } 
    } catch (Exception e) { 
     Log.d(Fots.TAG, 
       "GpsTrackService.mGpsLocationListener.onLocationChanged", e); 

    }  
} 
+0

si riferisce a questo utile http://wptrafficanalyzer.in/blog/gps-and-google-map-in-android-applications-series/ – Aravin

+0

come si esegue il test per gli aggiornamenti di posizione? –

+0

twntee..Io scrivo suLocationChanged() in un servizio. Quando eseguo l'accesso all'app, il servizio verrà avviato ed eseguirà il servizio ogni 1 minuto e riceverà l'aggiornamento della posizione per ogni 5 secondi utilizzando "locationRequest.setPriority (LocationRequest.PRIORITY_HIGH_ACCURACY);" – Raja45

risposta

2

Se si utilizza PRIORITY_HIGH_ACCURACY come nel tuo esempio, userà tutte le fonti disponibili (wifi, cellulare, GPS e sensori interni). Se si disattiva la rete Wi-Fi e ci si trova all'interno, probabilmente non è possibile ottenere un blocco GPS (in genere il GPS non funziona in ambienti chiusi tranne in alcune aree quando si è vicini a una finestra). Se wifi, cell e gps non sono disponibili (o perché sono disattivati ​​nelle impostazioni o non sono disponibili nella posizione specifica), non restituiscono una posizione (i sensori interni da soli non sono sufficienti per creare una posizione da zero).

2

Se siete in-door, il GPS probabilmente non funzionerà. Quindi ricadrà su wifi/triangolazione.

6

L'API con fuso fornisce 3 provider di posizione.

  1. HIGH_ACCURACY
  2. BALANCED_POWER
  3. NO_POWER

La modalità HIGH_ACCURACY utilizzare tutti i fornitori di posizione, tuttavia, è la priorità dei fornitori di posizione e includono GPS insieme con i fornitori di localizzazione. La precisione della posizione è di circa 10 metri di distanza.

La modalità BALANCED_POWER esclude il GPS per l'elenco dei provider di posizione e utilizza gli altri provider in base a torri cellulari, wifi, ecc. In questo caso, la precisione della posizione è di circa 40 metri.

NO_POWER non utilizza alcun provider di posizione, ma è una modalità passiva per ottenere la posizione da altre app. La precisione potrebbe essere un miglio o più. Si basa esclusivamente sulle posizioni che vengono recuperate da altre applicazioni di recente.

Problemi correlati