salve ragazzi, devo fare un pezzo di codice in cui, cliccato su un bottone, viene rilevata la posizione tramite gps(dovrò farlo anche per la rete)
Il problema è che non me la rileva(non so perchè eclipse non invia le cordinate quindi devo provare sempre sul cell).
Un primo errore è che non attende il rilevamento, dovrei fare un popup rilevamento fino a che non è collegato il segnale.
Il secondo errore è che nn entra nel trycatch della posizione, ecco il codice(anche abbastanza semplice eppure ho fatto qualche errore che non trovo)
codice:
private String providerId = LocationManager.GPS_PROVIDER;
private String citta;
private String indirizzo;
private Geocoder geocoder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_posizione);
final AlertDialog.Builder gpsAlertBuilder = new AlertDialog.Builder(this);
final LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
geocoder=new Geocoder(this);
final Location location = locationManager.getLastKnownLocation(providerId);
Button button=(Button)findViewById(R.id.buttonGps);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//Messaggio per attivazione gps se disattivato
if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
gpsAlertBuilder.setIcon(R.drawable.attenzione);
gpsAlertBuilder.setTitle("Attivazione");
gpsAlertBuilder
.setMessage("E' necessario attivare GPS e connessione internet");
gpsAlertBuilder.setCancelable(false);
gpsAlertBuilder.setPositiveButton("Attiva",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
startActivityForResult(
new Intent(
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS),
0);
}
});
gpsAlertBuilder.setNegativeButton("Annulla",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
System.exit(0);
}
});
AlertDialog gpsAlert = gpsAlertBuilder.create();
gpsAlert.show();
}
//Fine messaggio attivazione
//Rilevare posizione
Address address;
try {
address = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(),
1).get(0);
citta=address.getLocality();
indirizzo=address.getAddressLine(0);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
Button buttonConfirm=(Button)findViewById(R.id.buttonConferma);
buttonConfirm.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//passiamo i dati all'activity chiamante
Intent intent=new Intent(getApplicationContext(), InserisciActivity.class);
String pkg=getPackageName();
intent.putExtra(pkg+".myCity", citta);
intent.putExtra(pkg+".myAddress", indirizzo);
startActivity(intent); //facciamo partire la seconda activity
}
});
}