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".
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".