2013-06-18 5 views
1

Je suis en train d'écrire du code pour obtenir l'emplacement actuel (latitude et longitude) de mon téléphone. J'affiche un toast si le service de localisation réseau est fourni par le téléphone ou non. Ce toast n'apparaît jamais. L'autre question est, pour obtenir l'emplacement actuel en utilisant Network_location, l'application utilisera-t-elle le numéro de téléphone gprs/internet ou non?isProviderEnabled() ne se fait jamais appeler android

J'ai créé l'instance de cette classe dans l'activité principale, puis j'obtiens des données en utilisant les variables Latitude et Longitude de cette classe, dans une autre classe qui s'étend broadcast reciever.

public class GpsClass extends Activity{ 

public static String Latitude=""; 
public static String Longitude=""; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    LocationListener listener = new LocationListener() { // anonymous class 

     @Override 
     public void onStatusChanged(String arg0, int arg1, Bundle arg2) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onProviderEnabled(String arg0) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onProviderDisabled(String arg0) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onLocationChanged(Location currentLocation) { 

      double lat= currentLocation.getLatitude(); 

      Latitude = Double.toString(lat); 

      double longt= currentLocation.getLongitude(); 

      Longitude = Double.toString(longt); 

     } 
    }; 


    manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, listener); 

    if(manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) 
    { 
     Toast.makeText(getApplicationContext(), "Network enabled", 0).show(); 
    } 
    else 
     Toast.makeText(getApplicationContext(), "Network not enabled", 0).show(); 

} 

} 

Est-ce que je fais mal?

Cordialement

+1

Essayez d'ajouter Log au lieu de Toast et vérifiez s'il apparaît. – NarendraJi

Répondre

2

Je pense que le problème est que vous passez 0 pour une durée dire dernier paramètre de la méthode maketext(). Essayez le passage Toast.LENGTH_SHORT ou Toast.LENGTH_LONG.

if(manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) 
{ 
    Toast.makeText(getApplicationContext(), "Network enabled", Toast.LENGTH_LONG).show(); 
} 
else 
    Toast.makeText(getApplicationContext(), "Network not enabled", Toast.LENGTH_LONG).show(); 
+0

no. Cela n'a rien à voir avec ça. Tous les autres toasts dans mon application ont également 0 comme durée et ils fonctionnent bien! – user2498079

+0

Okay j'ai vu dans la documentation et a découvert que la valeur 0 est pour Toast.LENGTH_SHORT & la valeur 1 est pour Toast.LENGTH_LONG. Donc passer définitivement 0 comme troisième paramètre n'est pas un problème. –

0

This peut vous aider à obtenir une réponse à votre première question.

La réponse à votre deuxième question est - Non, l'application n'utilisera pas les gprs/internet du téléphone pour obtenir l'emplacement par le biais du fournisseur de réseau.

0

Le problème est le réglage 0 pour la durée. Ceci est un exemple d'exemple:

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    locationListener = new LocationListener() { 

     @Override 
     public void onLocationChanged(Location location) { 
      currentLocation = new GeoPoint(location.getLatitude(), location.getLongitude()); 
      // Set Toast Here To Diplay location  
     } 

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

     @Override 
     public void onProviderEnabled(String provider) { 
     } 

     @Override 
     public void onProviderDisabled(String provider) { 
     } 

    }; 
    if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
     //10000 means request update every 10 sec 
     //10 tell listener that if location change more than 10m then run locationChanged method 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 10, locationListener); 
    } else { 
     locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 10, locationListener); 
    } 
Questions connexes