Partage
  • Partager sur Facebook
  • Partager sur Twitter

Géolocalisation sur JavaAndroid

Programmation en java

    28 mars 2023 à 16:06:28

    Bonjour,

    J'ai un souci avec mon code. En effet la fonction getCoordonneesGps ne retourne rien au moment ou je fais un appel de fonction dans le SendSms dans la derniere méthode. 

    C'est terrible puisque syntaxiquement c'est correct mais l'objectif n'est pas atteint.

    Quelqu'un pourrai m'aider ? 

    import android.Manifest;
    import android.annotation.SuppressLint;
    import android.content.Context;
    import android.content.pm.PackageManager;
    import android.location.Address;
    import android.location.Geocoder;
    import android.location.Location;
    import android.os.Bundle;
    
    import androidx.annotation.NonNull;
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.telephony.SmsManager;
    import android.view.View;
    
    import androidx.core.app.ActivityCompat;
    import androidx.core.content.ContextCompat;
    
    import android.location.*;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;
    import java.util.Locale;
    import java.util.SimpleTimeZone;
    
    
    public class MainActivity extends AppCompatActivity implements LocationListener {
    
        LocationManager locationManager; //Fournisseur de localisation
        private TextView texte_view1, texte_view2, texte_view3, texte_view4;
        private static final int code = 200; //Request code = 200
        private double altitude;
    
        // 2.Initialisation des attributs responsables de l'envoi du SMS d'urgence
        private Button messageEnvoi;
        private EditText numTel;
        private static String messageAlerte;
    
        //Méthodes
        @Override
        protected void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //Attribution des variables
            // 1. Initialisation des attributs ressponsables de la localisation du GPS
            //bouton1 correpond au bouton utilisé pour l'affichage des coordonnées GPS
            Button bouton1 = findViewById(R.id.boutton_location);
            texte_view1 = findViewById(R.id.texte_view);
            texte_view2 = findViewById(R.id.texte2_view);
            texte_view3 = findViewById(R.id.texte3_view);
            texte_view4 = findViewById(R.id.texte4_view);
    
            if (ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                        /* Affichage : ACCEPTER ou REFUSER l'autorisation
                           Si l'application non autorisée : autorisation demandée.
    
                         */
                ActivityCompat.requestPermissions(MainActivity.this, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, code);
            }
    
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.SEND_SMS}, PackageManager.PERMISSION_GRANTED);
    
            bouton1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //Méthode privée permettant de vérifier si l'application est bien autorisée à utiliser la localisation de l'appareil.
                    Localisation();
                }
            });
            //Appel de la méthode responsable de l'envoi du message
            activiteInitialise();
        }
    
        //1. Méthodes responsables de la localisation GPS de l'appli
        @SuppressLint("MissingPermission")
        private void Localisation() {
    
            try {
                locationManager = (LocationManager) getApplicationContext().getSystemService(LOCATION_SERVICE);
                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5, MainActivity.this);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        @Override
        public void onLocationChanged(@NonNull Location location) {
            Toast.makeText(this, "" + location.getLatitude() + ", " + location.getLongitude(), Toast.LENGTH_SHORT).show();
            try {
                Geocoder geocoder = new Geocoder(MainActivity.this, Locale.getDefault());
                List<Address> addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
                //Intégration de la LATITUDE dans le TextView
                //Variables stockant les coordonnées GPS
                double latitude = addresses.get(0).getLatitude();
                double longitude = addresses.get(0).getLongitude();
                String localite = addresses.get(0).getLocality();
                String pays = addresses.get(0).getCountryName();
                String latitude_donnee = "Latitude : " + latitude + "";
                String longitude_donnee = "Longitude : " + longitude + "";
    
                //Intégration de la LATITUDE dans le TextView
    
                texte_view1.setText(latitude_donnee);
                //Intégration de la LONGITUDE dans le TextView
    
                texte_view2.setText(longitude_donnee);
                //Integration du Pays dans le TextView
    
                texte_view3.setText("Pays : " + pays);
                texte_view4.setText("Localité : " + addresses.get(0).getLocality() + "");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        //2. Méthodes responsable de l'envoi d'un message d'urgence
        public void activiteInitialise() {
            //Synchronisation des attirbuts avec les objets graphiques présents au niveau du Layout
            numTel = (EditText) findViewById(R.id.txtPhone);
            String messageSms = "";
            messageEnvoi = (Button) findViewById(R.id.btnEnvoi);
            instanceClicBoutonEnvoi();
        }
    
        private String getCoordonneesGps()
        {
            String coordonnes = "";
            // Vérifier si les permissions GPS sont accordées
    
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                    == PackageManager.PERMISSION_GRANTED)
            {
                // Obtenir le fournisseur de localisation
                coordonnes = "";
                LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                Location location = null;
    
                // Obtenir la dernière localisation connue
                if (locationManager != null)
                {
                    location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                }
    
                // Si une localisation est trouvée
                if (location != null)
                {
                    // Obtenir les coordonnées GPS
                    double latitude = location.getLatitude();
                    double longitude = location.getLongitude();
                    double altitude = location.getAltitude();
                    Date instant = new Date();
                    @SuppressLint("SimpleDateFormat") SimpleDateFormat heure = new SimpleDateFormat("HHmmss");
                    String chaineHeure = heure.format(instant);
                    // Créer la chaîne de caractères avec les coordonnées GPS
                    coordonnes = ("---URGENCES SAFETREK---\n\nAu momement : "+ chaineHeure +"Voici mes coordonnées GPS à prendre en compte/transemttre : " + "\n\nLatitude : "+ latitude+"\nLongitude : "+longitude+"\nAltitude: "+altitude+"\n\n**********");
                }
            }
            else
            {
                // Si les permissions GPS ne sont pas accordées, demander à l'utilisateur de les accorder
                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
            }
    
            return coordonnes;
    
        }
    
        public void instanceClicBoutonEnvoi() {
            String coordooneesGps = getCoordonneesGps();
            if (!coordooneesGps.isEmpty()) {
                messageEnvoi.setOnClickListener(new Button.OnClickListener() {
                    //Lorqu'il y aura un clic sur le bouton. Il y a execution du code présent dans les accolades.
                    public void onClick(View vue) {
                        if (numTel != null) {
                            SmsManager.getDefault().sendTextMessage(numTel.getText().toString(), null, coordooneesGps, null, null);
                        }
                    }
                });
            }
        }
    }
    

    -
    Edité par Zakaria Chaker 28 mars 2023 à 22:49:54

    • Partager sur Facebook
    • Partager sur Twitter

    Géolocalisation sur JavaAndroid

    × 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