Я создаю приложение в Android Studio, где я могу узнать свое текущее местоположение, но мое местоположение я получаю только тогда, когда я нажимаю кнопку во второй раз.
Это мой класс, где я получаю широту и долготу (это в моем MenuActivity)
public static class Localizacion implements LocationListener {
MenuActivity mainActivity;
/*public MenuActivity getMainActivity() {
return mainActivity;
}*/
public void setMainActivity(MenuActivity mainActivity) {
this.mainActivity = mainActivity;
}
@Override
public void onLocationChanged(Location location) {
//Se ejecuta cada vez que el GPS recibe nuevas coordenadas
//debido a la deteccion de un cambio de ubicacion
latitude = location.getLatitude();
longitude = location.getLongitude();
//mainActivity.setLocation(location);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
switch (status) {
case LocationProvider
.AVAILABLE:
Log.d("debug", "LocationProvider.AVAILABLE");
break;
case LocationProvider.OUT_OF_SERVICE:
Log.d("debug", "LocationProvider.OUT_OF_SERVICE");
break;
case LocationProvider.TEMPORARILY_UNAVAILABLE:
Log.d("debug", "LocationProvider.TEMPORARILY_UNAVAILABLE");
break;
}
}
@Override
public void onProviderEnabled(String s) {
//Este metodo se ejecuta cuando el GPS es activado
Toast.makeText(mainActivity.getApplicationContext(), "GPS Activado", Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderDisabled(String s) {
//Este metodo se ejecuta cuando el GPS es desactivado
Toast.makeText(mainActivity.getApplicationContext(), "GPS desactivado", Toast.LENGTH_SHORT).show();
}
}
и затем я получаю параметры в моей кнопке внутри фрагмента над этим действием
btnAlerta1.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
obtenerDatosUsuario(idUsuario);
obtenerDatosContactos(idUsuario);
//if (MenuActivity.ubicacion != null) {
if (MenuActivity.latitude != 0.0 && MenuActivity.longitude != 0.0) {
enviarSMSBoton1();
}else{
Toast.makeText(getContext(), "Error al obtener tu ubicación (Mensaje No Enviado), intentalo de nuevo", Toast.LENGTH_SHORT).show();
}
return true;
}
});
и, наконец, я вызываю метод, с помощью которого я отправляю SMS с моим местоположением
//Metodo donde se envia el mensaje cuando el boton 2 es presionado
private void enviarSMSBoton2() {
try {
SmsManager sms = SmsManager.getDefault();
if (idEmergencia == 1) {
messageParts = sms.divideMessage("(Me estan robando y soy Adulto Mayor) Soy " + nombreUsuario + " " + msg + " estoy en: "
+" https://www.google.com/maps/place//@"+String.valueOf(MenuActivity.latitude)+","+String.valueOf(MenuActivity.longitude));
}else if (idEmergencia == 2){
messageParts = sms.divideMessage("(Estan robando mi Vehículo) Soy " + nombreUsuario + " " + msg + " estoy en: "
+" https://www.google.com/maps/place//@"+String.valueOf(MenuActivity.latitude)+","+String.valueOf(MenuActivity.longitude));
} else if (idEmergencia == 3){
String dirE = obtenerDatosEmpresa(idUsuario);
messageParts = sms.divideMessage("(Estan robando en mi Empresa) Soy " + nombreUsuario + " " + msg+". Dirección: "+dirE+" y yo estoy en: "
+" https://www.google.com/maps/place//@"+String.valueOf(MenuActivity.latitude)+","+String.valueOf(MenuActivity.longitude));
}else if (idEmergencia == 4){
String dirHo = obtenerDatosHogar(idUsuario);
messageParts = sms.divideMessage("(Estan robando en mi Hogar) Soy " + nombreUsuario + " " + msg+". Dirección: "+dirHo+" y yo estoy en: "
+" https://www.google.com/maps/place//@"+String.valueOf(MenuActivity.latitude)+","+String.valueOf(MenuActivity.longitude));
}
//Toast.makeText(getContext(), "ubicación " + MenuActivity.ubicacion, Toast.LENGTH_SHORT).show();
sms.sendMultipartTextMessage(contacto1, null, messageParts, null, null);
if (!contacto2.isEmpty()) {
sms.sendMultipartTextMessage(contacto2, null, messageParts, null, null);
} else if (!contacto3.isEmpty()) {
sms.sendMultipartTextMessage(contacto3, null, messageParts, null, null);
}
Toast.makeText(getContext(), "Mensaje enviado", Toast.LENGTH_SHORT).show();
mp.start();
//}
//}
}catch (Exception e){
Toast.makeText(getContext(), "Mensaje No enviado verifica permisos e intentalo otra vez", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
но я не получаю свое местоположение, когда нажимаю кнопку первый раз, только когда нажимаю второй раз.
Я надеюсь, вы могли бы помочь мне.