import com.google.android.gms.maps.MapView;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends FragmentActivity implements LocationListener {
private LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MapView mpv=(MapView) findViewById(R.id.map);
mpv.setVisibility(View.INVISIBLE);
}
@Override
public void onResume() {
super.onResume();
//Obtention de la référence du service
locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE);
//Si le GPS est disponible, on s'y abonne
if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
abonnementGPS();
}
}
@Override
public void onPause() {
super.onPause();
//On appelle la méthode pour se désabonner
desabonnementGPS();
}
/**
* Méthode permettant de s'abonner à la localisation par GPS.
*/
public void abonnementGPS() {
//On s'abonne
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, this);
}
/**
* Méthode permettant de se désabonner de la localisation par GPS.
*/
public void desabonnementGPS() {
//Si le GPS est disponible, on s'y abonne
locationManager.removeUpdates(this);
}
@Override
public void onLocationChanged(final Location location) {
//On affiche dans un Toat la nouvelle Localisation
final StringBuilder msg = new StringBuilder("lat : ");
msg.append(location.getLatitude());
msg.append( "; lng : ");
msg.append(location.getLongitude());
Toast.makeText(this, msg.toString(), Toast.LENGTH_LONG).show();
}
@Override
public void onProviderDisabled(final String provider) {
//Si le GPS est désactivé on se désabonne
if("gps".equals(provider)) {
desabonnementGPS();
}
}
@Override
public void onProviderEnabled(final String provider) {
//Si le GPS est activé on s'abonne
if("gps".equals(provider)) {
abonnementGPS();
}
}
@Override
public void onStatusChanged(final String provider, final int status, final Bundle extras) { }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
但是我收到了一个例外
05-27 09:23:53.266: E/AndroidRuntime(11369): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gmapsver2/com.example.gmapsver2.MainActivity}: java.lang.ClassCastException: android.support.v4.app.NoSaveStateFrameLayout cannot be cast to com.google.android.gms.maps.MapView