Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème géolocalisation sur android

Sujet résolu
    9 avril 2019 à 11:47:49

    Bonjour, j'ai suivis  étape par étape les instructions donné dans ce cours : https://openclassrooms.com/fr/courses/2023346-creez-des-applications-pour-android/2028397-la-localisation-et-les-cartes .

    Mais malheureusement, je n'arrive pas à récupérer la longitude et la latitude lorsque mon application n'est pas en cours de fonctionnement. J'ai l'impression que la classe GPSUpdateReceiver ne reçois aucune notification.

    Voici le code que j ai utilisé:

    Dans mon activité principale:

    //region Géolocalisation
    Criteria critere = new Criteria();

    //Pour indiquer la précision voulue, On peut mettre ACCURACY_FINE pour une haute précision ou ACCURACY_COARSE pour une moins bonne précision
    critere.setAccuracy(Criteria.ACCURACY_FINE);

    // Est-ce que le fournisseur doit être capable de donner une altitude ?
    critere.setAltitudeRequired(true);

    // Est-ce que le fournisseur doit être capable de donner une direction ?
    critere.setBearingRequired(true);


    // Est-ce que le fournisseur peut être payant ?
    critere.setCostAllowed(false);


    //Pour indiquer la consommation d'énergie demandée, Criteria.POWER_HIGH pour une haute consommation, Criteria.POWER_MEDIUM pour une consommation moyenne et Criteria.POWER_LOW pour une basse consommation

    critere.setPowerRequirement(Criteria.POWER_HIGH);

    // Est-ce que le fournisseur doit être capable de donner une vitesse ?
    critere.setSpeedRequired(true);



    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //pour la localisation

    String names = locationManager.getBestProvider(critere,true);


    if(names!=null)
    {

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    // TODO: Consider calling
    // ActivityCompat#requestPermissions
    // here to request the missing permissions, and then overriding
    // public void onRequestPermissionsResult(int requestCode, String[] permissions,
    // int[] grantResults)
    // to handle the case where the user grants the permission. See the documentation
    // for ActivityCompat#requestPermissions for more details.
    return;
    }

    Intent intent = new Intent(this, GPSUpdateReceiver.class);


    PendingIntent pending = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);


    locationManager.requestLocationUpdates(names, 60000, 150, pending);

    }

    Classe qui est censé recevoir les notifications:

    public class GPSUpdateReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent)
    {

    Location location = (Location)intent.getParcelableExtra(LocationManager.KEY_LOCATION_CHANGED);

    }

    Est ce qu'il faut que je change obligatoirement de position pour que ça fonctionne, ou  recoit-on quand même la notification après les 60 secondes?

    Est ce qu'il faut des droits particuliers à mettre dans le fichier androidManifest, pour pouvoir faire fonctionner les notifications(BroadcastReceiver)?

    Merci d'avance et bonne journée.

    • Partager sur Facebook
    • Partager sur Twitter

    Problème géolocalisation sur android

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown