我正在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();
}
}
但是当我第一次按下按钮时,我没有得到我的位置,只有当我第二次按下时。 我希望你能帮助我。