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
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.