2011-02-26 7 views
4

J'ai développé une application pour trouver l'emplacement de l'utilisateur en utilisant le GPS.Trouver l'emplacement actuel fonctionne en utilisant le Wifi, mais échoue en utilisant le GPS

Il n'y a pas d'erreur. Il trouve l'emplacement en utilisant correctement le Wifi, mais en mode GPS, il ne renvoie aucune valeur. J'ai ajouté la permission nécessaire dans le manifeste et le GPS est allumé. Est-ce que quelqu'un peut me dire comment obtenir l'emplacement en utilisant Gps?

J'ai inclus mon code ici:

package c.g.a.loation; 

public class UseGps extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     LocationListener mlocListener = new MyLocationListener(); 
     mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, 
       mlocListener); 
    } 

    /* Class My Location Listener */ 
    public class MyLocationListener implements LocationListener { 

     @Override 
     public void onLocationChanged(Location loc) { 
      Geocoder gp = new Geocoder(getBaseContext()); 
      try { 
       ArrayList<Address> address = (ArrayList<Address>) gp 
         .getFromLocation(loc.getLatitude(), loc.getLongitude(), 
           1); 
       if (address != null && address.size() > 0) { 
        Toast.makeText(getBaseContext(), address.get(0).toString(), 
          Toast.LENGTH_LONG).show(); 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     public void onProviderDisabled(String provider) {} 

     @Override 
     public void onStatusChanged(String arg0, int arg1, Bundle arg2) {} 

     @Override 
     public void onProviderEnabled(String arg0) {} 
    } 

    public void onProviderEnabled(String provider) { 
     // Toast.makeText(
     // getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show(); 
    } 

    public void onStatusChanged(String provider, int status, Bundle extras) {} 
} 

Répondre

0

J'ai deux pensées ...

  1. Votre code ne vérifie pas pour vous assurer que le fournisseur de GPS est activé. Je vois le code commenté envoyer un Toast lorsque tout fournisseur est activé, mais vous pouvez vérifier que le fournisseur GPS est activé dans onCreate().

  2. Combien de temps attendez-vous pour obtenir l'emplacement GPS? Le GPS_PROVIDER peut parfois prendre un certain temps pour obtenir une solution GPS. J'ai vu des valeurs TTFF (time to fist fix) de plus de deux minutes avant. Pour aggraver les choses, j'ai vu des différences TTFF drastiques dans différentes versions d'Android ainsi que différents appareils.

Je vous recommande d'essayer d'obtenir une solution GPS à partir d'une autre application pour voir combien de temps cela prend. En règle générale, je lance soit Google Maps, soit le statut GPS (gratuit sur le marché) pour avoir une idée du temps qu'il faut pour obtenir une solution GPS. Si vous essayez Google Maps, assurez-vous qu'il reçoit le correctif GPS et pas seulement un emplacement du NETWORK_PROVIDER (l'icône GPS en haut de votre écran devrait cesser de clignoter).

Questions connexes