Aiuto urgente : applicazione con GPS per esame maturità
Ciao ragazzi,tra poco iniziano gli esami di maturità ed io sto sviluppando un'applicazione che lavora con Maps e che si occupa di controllare i movimenti dell'utilizzatore del telefono affinchè egli rimanga all'interno di una specifica area delimitata.In sostanza legge l'attuale posizione GPS e controlla che non superi la distanza massima dal centro dell'area "protetta".In caso di allontanamento eccessivo,l'applicazione invia un SMS ad un numero preimpostato segnalndo l'effrazione.Ecco quello che ho fatto finora,che vi sembra:
codice:
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import android.content.Context;
import android.content.res.Resources;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.widget.Toast;
public class GPS extends MapActivity
{
private LocationManager lm;
private LocationListener locationListener;
private MapView mapView;
private MapController mc;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//---use the LocationManager class to obtain GPS locations---
lm = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
lm.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
0,
0,
locationListener);
mapView = (MapView) findViewById(R.id.mapview1);
mc = mapView.getController();
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
private class MyLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location loc) {
if (loc != null) {
/* Toast.makeText(getBaseContext(),
"Location changed : Lat: " + loc.getLatitude() +
" Lng: " + loc.getLongitude(),
Toast.LENGTH_SHORT).show();*/
GeoPoint p = new GeoPoint(
(int) (loc.getLatitude() * 1E6),
(int) (loc.getLongitude() * 1E6));
/*LocationProvider L = null;
Location control=new Location(L.getName());*/
Location control=new Location(loc);
Resources res=getResources();
Double newlat=Double.parseDouble(res.getString(R.string.Lat));
Double newlng=Double.parseDouble(res.getString(R.string.Lng));
control.setLatitude(newlat);
control.setLongitude(newlng);
Float dist=loc.distanceTo(control);
if(dist>Float.parseFloat(res.getString(R.string.MaxDist))) //controllo se mi sono allontanato troppo
{
/*SmsManager m = SmsManager.getDefault();
String destination = "numeroscelto";
String text = "Warning!The objective is leaving the security area!Actual position:Lat:" + loc.getLatitude() + " Lng:" + loc.getLongitude() +"";
m.sendTextMessage(destination, null, text, null, null);*/
Toast.makeText(getBaseContext(),
"Area violated,the Master user has been informed of your effraction!",
Toast.LENGTH_SHORT).show();
}
mc.animateTo(p);
mc.setZoom(16);
mapView.invalidate();
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub
}
}
}
Ora ecco alcune domande:
1) Vorrei fare in modo che ogni volta che l'utente tocca lo schermo compaia un Toast che segnala l'attuale distanza dall'area protetta
2)Avrete notato che le coordinate dell'area protetta,la distanza massima consentita ed il numero di telefono da contattare in caso di violazione sono forniti tramite resources.C'è un modo per modificare tali risorse tramite l'applicazione?