2013-01-24 6 views
0

Je dois obtenir la localisation des utilisateurs pour mon application afin que je puisse afficher les indications sur Google Maps sur la base de deux Lat et Long.Android GPS Emplacement de l'utilisateur

Si le GPS des utilisateurs est éteint, il doit demander à l'utilisateur s'il veut allumer le GPS et devrait pouvoir lui apporter les paramètres pour l'allumer.

Je suis en train d'essayer la suite, mais il me prend directement les paramètres je me demande comment laisser l'utilisateur demander s'il veut être emmené.

Y at-il une bibliothèque qui fait cela efficacement je préférerais l'utiliser pour obtenir le Lat et Long de l'utilisateur.

Répondre

1

Vous aurez besoin de faire plusieurs choses.

Tout d'abord, pour incorporer Google Maps, votre référence complète est disponible here.

en quelques étapes simples:

1 Suivez les étapes here: cela permettra d'ajouter un simple google maps à votre écran.

2 Pour pouvoir obtenir votre propre emplacement, vous devez utiliser LocationListener et LocationManager dans android. Pour ce faire, commencez par implémentez le LocationListener dans votre activité.

public class LocationActivity extends Activity implements LocationListener

3 Ensuite, vous devez instancier quelques paramètres dans votre méthode onCreate()

 @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     // Get the location manager 
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    // Define the criteria how to select the provider 
    Criteria criteria = new Criteria(); 
    criteria.setAccuracy(Criteria.ACCURACY_FINE); 
    provider = locationManager.getBestProvider(criteria, false); 
    Location location = locationManager.getLastKnownLocation(provider); 

    // Initialize the location fields 
    if (location != null) { 
     System.out.println("Provider " + provider + " has been selected."); 
     onLocationChanged(location); 
    } 
    } 

4 Vous devez être en mesure de demander des mises à jour régulières emplacement. Incluez ceci dans votre méthode onResume().

@Override 
    protected void onResume() { 
    super.onResume(); 
    locationManager.requestLocationUpdates(provider, 400, 1, this); 
    } 

5 Si l'application tombe dans le cycle de pause, ces mises à jour ne devraient pas être nécessaires.

@Override 
    protected void onPause() { 
    super.onPause(); 
    locationManager.removeUpdates(this); 
    } 

6 Votre position mise en œuvre de l'auditeur de l'étape 2 exige que vous avez un auditeur OnLocationChanged, la mettre en oeuvre:

@Override 
public void onLocationChanged(Location location) { 
int lat = (int) (location.getLatitude()); 
int lng = (int) (location.getLongitude()); 
} 

7 Ajouter ces deux méthodes pour être informé du fournisseur de réglage de l'emplacement - la GPS ou le réseau.

public void onProviderDisabled(String arg0) { 
    Toast.makeText(this, "Disabled provider " + provider, 
       Toast.LENGTH_SHORT).show(); 
} 

public void onProviderEnabled(String arg0) { 
    Toast.makeText(this, "Enabled new provider " + provider, 
       Toast.LENGTH_SHORT).show(); 
} 

8 Nous devons maintenant lier ceci à vos google maps. Je vais vous montrer un exemple d'utilisation de l'API google maps pour générer un marché afin de montrer votre position actuelle. Les autres utilisations peuvent être déduites de l'API.

d'abord créer des champs privés dans votre code:

private GoogleMap mMap; 
Marker m; 

9 Ajouter ces derniers dans votre méthode onCreate - ce instancie votre position de marqueur par défaut comme 0,0 latitude et longitude. 10 Dans votre méthode onLocationChanged, nous avons besoin de rafraîchir ce marqueur lorsque l'emplacement change. Dans la méthode onLocationChanged, vous devez actualiser ce marqueur. Alors ajouter:

m.setPosition(new LatLng(lat, lng)); 
m.setTitle("Your Position"); 

// Move the camera instantly to marker with a zoom 
// of 15. 
          mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), 15)); 

Ce sera un moyen simple de mettre à jour le marqueur avec votre position, et devrait être une bonne intro à votre Google Maps et l'API de localisation dans Android.

Pour détecter si le GPS est activé ou non, vous pouvez utiliser la réponse fournie par @Dror :) J'espère que ça aide!

2

Si vous demandez comment demander à l'utilisateur s'il souhaite être redirigé vers la page de configuration, pour activer les services de localisation, je vous recommande simplement de présenter un dialogue. Voici un exemple de mon projet:

// Presents dialog screen - location services 
private void askLocationDialog(){ 
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 

    alertDialogBuilder.setTitle(R.string.snoox_use_location_services_dialog); 

    // set dialog message 
    alertDialogBuilder.setMessage(R.string.would_you_like_to_turn_your_location_services_on_) 
    .setCancelable(false) 
    .setPositiveButton(R.string.ok,new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog,int id) { 
      // opens the setting android screen 
      Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
      startActivity(settingsIntent); 
     } 
    }) 
    .setNegativeButton(R.string.no,new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog,int id) { 
      dialog.cancel(); 
     } 
    }); 

    // create alert dialog 
    alertDialogBuilder.create().show(); 
} 

si vous êtes intéressé par un exemple complet j'ai trouvé ce message utile: How do I find out if the GPS of an Android device is enabled