- Mam aplikację na Androida, która ma Google Maps V2 jako część funkcjonalności.
-
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
w moim manifestu, a wszystko inne potrzebne do map do pracy.
- Moja aplikacja nie rozpoczyna się na ekranie z mapami.
Nasuwa się pytanie dlaczego mój telefon (Galaxy Nexus, na wszelki wypadek) rozpoczyna się pokazując ikonę GPS na pasku stanu tuż po uruchomieniu aplikacji, ale nie kiedy się do ekranu z mapami i zacząć z nim pracować ? Nie muszę śledzić mojej lokalizacji i używać energii baterii, gdy nie znajduję się na ekranie mapy.
Na przykład komunikator aplikacji używa GPS do swojej mapy, ale ikona jest wyświetlana tylko po otwarciu ekranu mapy, a nie przy pierwszym uruchamianym działaniu.
Wyszukiwarka Google przez kilka godzin, ale nic nie znalazła. Każda pomoc zostanie doceniona!
Zmieniano:
klasa MapActivity
private LocationListener mLocationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};
@Override
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
setContentView(R.layout.map_activity);
startGPS();
initMap();
mMapView = (MapView) findViewById(R.id.map_google_map);
mMapView.onCreate(null);
mGoogleMap = mMapView.getMap();
if (mGoogleMap != null) {
customizeGoogleMap();
loadAndFillMap();
}
}
private void startGPS() {
mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationListener);
}
private void initMap() {
try {
MapsInitializer.initialize(this);
} catch (GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}
}
private void customizeGoogleMap() {
mGoogleMap.getUiSettings().setMyLocationButtonEnabled(true);
mGoogleMap.setMyLocationEnabled(true);
}
private void loadAndFillMap() {
new LoadAndFillMapTask().execute();
}
private class LoadAndFillMapTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
String address = Session.appData().getSelectedAddress();
mMapLocation = Api.getMapApi().getMapLocation(address);
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
fillMap();
}
}
private void fillMap() {
// filling Google Map with markers etc.
}
@Override
public void onDestroy() {
super.onDestroy();
if (mMapView != null) {
mMapView.onDestroy();
}
mLocationManager.removeUpdates(mLocationListener);
}
możemy zobaczyć niektóre kod głównej działalności proszę? – mithrop
@mithrop Główna działalność nie zawiera absolutnie nic związanego z mapami google, szczerze mówiąc nie widzę sensu w pokazywaniu, co się tam dzieje. Co więcej, aplikacja uruchamia się z ekranem powitalnym (w tym momencie ikona GPS jest już wyświetlana na pasku stanu), która zawiera tylko intencję do głównej aktywności opóźnionej o 1 sekundę. – Makks129