2012-04-14 6 views
0

Ich habe den folgenden Code für den besten verfügbaren Anbieter geschrieben.So erhalten Sie den Status von LocationProvider in Android

private static String provider; 

    public static String setCriteria(LocationManager locationManager) { 
     Criteria criteria = new Criteria(); 
     criteria.setAccuracy(Criteria.ACCURACY_FINE); 
     criteria.setAltitudeRequired(false); 
     criteria.setBearingRequired(false); 
     criteria.setCostAllowed(true); 
     criteria.setPowerRequirement(Criteria.POWER_MEDIUM); 
     provider = locationManager.getBestProvider(criteria, true); 
     LocationProvider locProvide = locationManager.getProvider(provider);   
     if (provider == null) { 
      provider = LocationManager.GPS_PROVIDER; 
     } 
     return provider; 
    } 

Ich habe diesen Code, um den Provider zu finden, den ich verwenden werde, um den Standort zu bekommen. Was ich jetzt überprüfen möchte, ist der Status des Providers. Ich habe aus dem Dokument gelesen, dass LocationProvider 3 Zustände verfügbar, außer Betrieb & TEMPORARILY_UNAVAILABLE hat. Jetzt muss ich den Status überprüfen, bevor ich den Standort-Listener anfordere.

Wenn der Status z. B. TEMPORARILY_UNAVAILABLE oder Außer Betrieb ist, wird der Benutzer die entsprechende Meldung erhalten, andernfalls wird der Standort gefunden. Also meine Frage wie kann ich den Status überprüfen?

Wenn jemand eine Idee hat mir bitte freundlicherweise helfen ...

Antwort

0

Sie versuchen können requestlocationupdates auf Ihrem Locationmanager Objekt und implementieren Ihre Location Objekt ... wie folgt aus ..

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
LocationListener ll = new mylocationlistener(); 
lm.requestLocationUpdates(provider, 0, 0, ll); 

    private class mylocationlistener implements LocationListener { 
    .... 

    @Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
    switch(status){ 
    case 0: 
    //OutofService 
    break; 
    case 1: 
    //Temporarily unavailable 
    break; 
    case 2: 
    //Available 
    break; 

    } 
} 
+0

Danke für Ihre Antwort werde ich das versuchen ... – Prem

+0

Hat es funktioniert? oder irgendein Problem noch? – 5hssba

+0

Ich habe den Code versucht, den Sie angegeben haben. Was ich getan habe, ist einfach Toast Nachrichten, aber nichts passiert. Kannst du mir sagen, wann onStatusChanged ausgelöst wird? – Prem

0

AFAIK Dies ist the ultimate solution für das oben genannte Problem .. und nichts kann darüber hinausgehen Sie können nur sagen, ist verfügbar oder nicht mit der booleschen Variable isGPSfix

Obwohl Sie andere versuchen können like this, aber das ist keine Garantie, in jeder Situation zu arbeiten.

+0

Ok..Danke für den Vorschlag .... – Prem