9

Ich entwickle eine App mit Fused Location Provider. Ich habe einen Zweifel. Um den Standort in regelmäßigen Abständen zu erhalten, verwendet er requestLocationUpdates(). Aber von welcher Quelle wird es den Standort entweder von WIFI oder GPS oder Netzwerk bekommen. In meiner App wird der Standort nur in regelmäßigen Abständen angezeigt, wenn WLAN aktiviert ist. Wenn WiFi im OFF-Zustand ist, kann es den Ort nicht erreichen (es sollte Ort von einer anderen Quelle entweder von GPS oder Netzwerk bekommen. Aber es wird nie Ort bekommen. Oder ich muss Listener für GPS und Netzwerk schreiben). Ich weiß nicht, was das Problem ist. Kann mir jemand helfen.Fused Location Provider in Android

Und, ob es funktioniert, nur wenn alle Anbieter (Wifi, GPS, Netzwerk) verfügbar oder sonst.

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

beziehen Sie sich das vielleicht hilfreich http://wptrafficanalyzer.in/blog/gps-and-google-map-in-android-applications-series/ – Aravin

+0

Wie testen Sie für Standortaktualisierungen? –

+0

twntee..Ich schreibe onLocationChanged() in einen Service. Wenn ich mich bei der App anmelde, wird der Dienst gestartet und der Dienst wird alle 1 Minute ausgeführt. Die Standortaktualisierung wird alle 5 Sekunden mit "locationRequest.setPriority (LocationRequest.PRIORITY_HIGH_ACCURACY)" durchgeführt. – Raja45

Antwort

2

Wenn Sie PRIORITY_HIGH_ACCURACY wie in Ihrem Beispiel verwenden, werden alle verfügbaren Quellen nutzen (WiFi, Zelle, GPS, und interne Sensoren). Wenn du WLAN deaktivierst und drinnen bist, kannst du wahrscheinlich kein GPS-Schloss bekommen (im Allgemeinen funktioniert GPS nicht drinnen, außer in einigen Bereichen, wenn du in der Nähe eines Fensters bist). Wenn Wi-Fi, Zelle und GPS nicht verfügbar sind (entweder weil sie in den Einstellungen deaktiviert sind oder in Ihrer speziellen Position nicht verfügbar sind), wird kein Standort zurückgegeben (interne Sensoren allein reichen nicht aus, um sie zu erstellen ein Ort von Grund auf).

2

Wenn Sie im Haus sind, wird GPS wahrscheinlich nicht funktionieren. Es wird also wieder auf Wifi/Triangulation zurückgreifen.

6

Fused API bietet 3 Standortanbieter.

  1. HIGH_ACCURACY
  2. BALANCED_POWER
  3. NO_POWER

Der HIGH_ACCURACY Modus alle Standort-Anbieter verwenden, ist es die Standortanbieter jedoch priorisieren und umfassen GPS zusammen mit Standort-Anbieter. Die Standortgenauigkeit liegt ungefähr innerhalb von 10 Metern Entfernung.

Der BALANCED_POWER-Modus schließt GPS für seine Liste von Standortanbietern aus und verwendet die anderen Anbieter einschließlich Mobilfunkmasten, WLAN usw. In diesem Fall beträgt die Standortgenauigkeit ca. 40 Meter.

Die NO_POWER verwenden keinen Standortanbieter, stattdessen ist es ein passiver Modus, um den Standort von anderen Apps zu erhalten. Die Genauigkeit könnte eine Meile oder mehr betragen. Es basiert ausschließlich auf den Standorten, die in letzter Zeit von anderen Anwendungen abgerufen wurden.

Verwandte Themen