第一次按下按钮时如何获取我的位置?

时间:2018-11-02 16:01:43

标签: android-studio

我正在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;
        }
    });

最后,我调用了发送带有我的位置的短信的方法

//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();
    }

}

但是当我第一次按下按钮时,我没有得到我的位置,只有当我第二次按下时。 我希望你能帮助我。

0 个答案:

没有答案