как узнать свое местоположение, когда я нажимаю кнопку в первый раз? - PullRequest
0 голосов
/ 02 ноября 2018

Я создаю приложение в 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();
    }

}

но я не получаю свое местоположение, когда нажимаю кнопку первый раз, только когда нажимаю второй раз. Я надеюсь, вы могли бы помочь мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...