PDA

Ver la Versión Completa : [ CONSULTA ] Porque mi aplicación se cierra?


superroko2
16/12/12, 00:46:04
Se resume básicamente a esto:

public class TesterActivity extends Activity {

ListView lista;

private static String url2 = "http://www.misitio.com/registerlocation.php";
private ProgressDialog pd = null;

String lat = "";
String lon = "";

JSONParser jParser = new JSONParser();

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

pd = ProgressDialog.show(this, "Registrando localización..", "Esperando señal de GPS válida");

Log.d("Why", "why");
configGPS();
}

private void configGPS() {
LocationManager mLocationManager;
LocationListener mLocationListener;

mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mLocationListener = new MyLocationListener();

mLocationManager.requestLocationUpdates(LocationMa nager.GPS_PROVIDER, 1000, 1, mLocationListener);
}

public void enviardatos() {

ArrayList<NameValuePair> postparameters2send = new ArrayList<NameValuePair>();
postparameters2send.add(new BasicNameValuePair("latitud", lat));
postparameters2send.add(new BasicNameValuePair("longitud", lon));

jParser.makeHttpRequest(url2, "POST", postparameters2send);
Toast.makeText(TesterActivity.this, "Datos enviados, cierre la aplicación", Toast.LENGTH_LONG).show();

}


private class MyLocationListener implements LocationListener {

public void onLocationChanged(Location location) {
// TODO Auto-generated method stub

lat = String.valueOf(location.getLatitude()) + "E6";
lon = String.valueOf(location.getLongitude()) + "E6";

Log.d("HelloGPSActivity", lat);
Log.d("HelloGPSActivity", lon);

enviardatos();

pd.dismiss();

}

public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub

}

public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub

}

public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub

}

}
}


Estoy haciendo pruebas con el GPS. Si ejecuto la aplicación con el emulador todo bien. Se queda cargando y cuando recibe el GPS se envía. Si la ejecuto en mi móvil (Jiayu G2 con Android 4.0.4) se cierra al recibir el GPS.

Cuál puede ser el error? Puede ser algo de eso de bloquear el MainThread o algo similar?

Un saludo ;)

PD: No copio la clase JSONParser porque sería una absurdidad además funciona bien seguro.


EDITO:

He añadido este código en el LocationManager:

Thread t = new Thread(new Runnable() {
public void run() {
try {
enviardatos();
} catch (Throwable t) {

}
}
});

t.start();

Por lo poco que sé, si el problema fuera lo de bloquear el MainThread, con esto estaría solucionado, no? Sigue funcionando en el emulador pero en mi móvil: "Se ha detenido la aplicación".

oscar8x
16/12/12, 11:43:27
Has probado a que obtener la posición GPS antes de arrancar la aplicación? Yo no se por qué motivo, pero yo tuve un problema similar de cierres. Sin embargo, arrancaba gmaps con GPS activo y cuando obtenía posición salía y arrancaba mi aplicación y funcionaba ok.

superroko2
16/12/12, 18:48:35
Como puedo hacerlo? Aunque me parece raro. Los GPS y las aplicaciones tipo Runtastic y demás buscan el GPS con la aplicación abierta.

A ver si puedes explicarme cómo esperar a la señal antes de que se abra y a ver si alguien puede encontrar el error de la mía o explicarme porque se detiene y explicarme como hacerlo para que no ocurra.

superroko2
16/12/12, 23:38:34
Subo!

oscar8x
17/12/12, 00:07:25
Como puedo hacerlo? Aunque me parece raro. Los GPS y las aplicaciones tipo Runtastic y demás buscan el GPS con la aplicación abierta.

A ver si puedes explicarme cómo esperar a la señal antes de que se abra y a ver si alguien puede encontrar el error de la mía o explicarme porque se detiene y explicarme como hacerlo para que no ocurra.

Por ejemplo, la app la estaba desarrollando en la oficina y no tenía cobertura GPS, salía afuera y conectaba con Gmaps. Cuando obtiene posición lo ves porque el icono cambia de color y aparece donde estás. Luego entraba y funcionaba ok. Usaba que obtuviese cuando conectase la última posición válida y después que actualizase con las nuevas.

El problema era que no se si sería que las nuevas serían null y haría que fallase la posición, pero si estaba un tiempo sin usar volvía a fallar si no tenía la GPS válida. No miré más a fondo porque fue con tutoriales que iba siguiendo.

superroko2
17/12/12, 12:32:59
Buenas,

Ya te entiendo pero no me sirve. Mi problema no es ese. Mi aplicación ya controla esas cosas que comentaste. No sé que puede fallar.

Alguien?

kriogeN
17/12/12, 12:34:13
Haz un logcat que para eso está, te va a decir en donde está fallando tu app.