Skip to content

Commit b7cecbb

Browse files
committed
offline map issue solved, version 1.09.04
1 parent 136b8fc commit b7cecbb

File tree

8 files changed

+92
-11
lines changed

8 files changed

+92
-11
lines changed

SUDEAU/res/layout/activity_switchboard.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,13 @@
8989
android:drawableLeft="@drawable/ic_route_select"
9090
android:text="@string/trip_selection" >
9191
</Button>
92+
93+
<fragment
94+
android:id="@+id/map"
95+
android:name="com.google.android.gms.maps.SupportMapFragment"
96+
android:layout_width="0px"
97+
android:layout_height="0px"/>
98+
9299
</LinearLayout>
93100

94101

SUDEAU/res/values-ca/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@
180180
<string name="interactive_image">Imatge interactiva</string>
181181
<string name="interactive_pic">Fotografia interactiva</string>
182182
<string name="internet_needed_message">Et cal una connexió a Internet per respondre l\'enquesta. Si us plau, comprova els ajustos i torna a aquesta activitat quan tinguis connexió\n</string>
183-
<string name="internet_needed_message_content">A Eth Holet li cal una connexió a Internet per descarregar els mapes i els continguts dels itineraris. Abans de començar una excursió connecta\'t a Internet i selecciona \'Sincronitzar\' a les opcions del menú, si us plau.\n</string>
183+
<string name="internet_needed_message_content">A Eth Holet li cal una connexió a Internet per descarregar els mapes i els continguts dels itineraris. Abans de començar una excursió connecta\'t a Internet, si us plau.\n</string>
184184
<string name="internet_needed_title">Cal Internet</string>
185185
<string name="ios_by">Aplicació iOS:</string>
186186
<string name="it_was_financed_by_the_european_union_through_the_">Ha estat finançat per la Unió Europea a través del projecte Sud\'Eau2.</string>

SUDEAU/res/values-es/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@
180180
<string name="interactive_image">Imagen interactiva</string>
181181
<string name="interactive_pic">Fotografía interactiva</string>
182182
<string name="internet_needed_message">Te hace falta una conexión a Internet para responder la encuesta. Por favor, comprueba los ajustes y vuelve a esta actividad cuando tengas conexión</string>
183-
<string name="internet_needed_message_content">Eth Holet necesita una conexión a Internet para descargar los mapas y los contenidos de los itinerarios. Antes de empezar una excursión conéctate a Internet y selecciona \'Sincronizar\' en las opciones del menú, por favor.</string>
183+
<string name="internet_needed_message_content">Eth Holet necesita una conexión a Internet para descargar los mapas y los contenidos de los itinerarios. Antes de empezar una excursión conéctate a Internet por favor.</string>
184184
<string name="internet_needed_title">Hace falta Internet</string>
185185
<string name="ios_by">Aplicación iOS:</string>
186186
<string name="it_was_financed_by_the_european_union_through_the_">Ha sido financiado por la Unión Europea a través del proyecto Sud\'Eau2.</string>

SUDEAU/res/values/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@
181181
<string name="interactive_pic">Fotografia interactiva</string>
182182
<string name="internal_message_id" translatable="false">net.movelab.sudeau.internal_message</string>
183183
<string name="internet_needed_message">Te cau ua connexion a Internet entà respóner era enquèsta. Se te platz, compròva es ajustaments e torna ad aguesta activitat quan ages connexion</string>
184-
<string name="internet_needed_message_content">A Eth Holet li cau ua connexion a Internet entà descargar es mapes e es contenguts des itineraris. Abans de començar ua excursion connècta-te a Internet e selecciona \'Sincronizar\' enes opcions deth menú, se te platz.</string>
184+
<string name="internet_needed_message_content">A Eth Holet li cau ua connexion a Internet entà descargar es mapes e es contenguts des itineraris. Abans de començar ua excursion connècta-te a Internet, se te platz.</string>
185185
<string name="internet_needed_title">En çò d\'Internet</string>
186186
<string name="ios_by">iOS app per\u0020</string>
187187
<string name="it_was_financed_by_the_european_union_through_the_">A estat finançat pera Union Europèa a trauès deth projècte Sud\'Eau2.</string>

SUDEAU/src/net/movelab/sudeau/ChooseItineraryActivity.java

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ public class ChooseItineraryActivity extends FragmentActivity {
6565
private int fourth_id = Menu.FIRST+3;
6666
private int fifth_id = Menu.FIRST+4;
6767

68+
private DownloadResultBroadcastReceiver mDownloadResultBroadcastReceiver;
69+
6870
private ProgressBar progressBar;
6971
private RelativeLayout core_data_loading;
7072

@@ -99,7 +101,7 @@ protected void onCreate(Bundle savedInstanceState) {
99101
progressBar = (ProgressBar) findViewById(R.id.pbChooseItinerary);
100102
core_data_loading = (RelativeLayout) findViewById(R.id.core_data_loading);
101103

102-
if(PropertyHolder.getLastUpdateGeneralMap() > 0L && PropertyHolder.getLastUpdateGeneralReferences() >= 0L){
104+
if(PropertyHolder.getLastUpdateGeneralMap() > 0L && PropertyHolder.getLastUpdateGeneralReferences() >= 0L && (Util.isOnline(context) || PropertyHolder.isGoogleMapsOfflineReady())){
103105
setUpMapIfNeeded();
104106
setUpCamera();
105107
} else{
@@ -108,13 +110,17 @@ protected void onCreate(Bundle savedInstanceState) {
108110
}
109111

110112
private void waitForCoreData(){
113+
if(Util.isOnline(context)){
111114
core_data_loading.setVisibility(View.VISIBLE);
112115
IntentFilter coreDataResponseFilter = new IntentFilter(Util.INTENT_CODE_CORE_DATE_RESPONSE);
113116
DownloadResultBroadcastReceiver mDownloadResultBroadcastReceiver =
114117
new DownloadResultBroadcastReceiver();
115118
LocalBroadcastManager.getInstance(this).registerReceiver(
116119
mDownloadResultBroadcastReceiver,
117120
coreDataResponseFilter);
121+
} else{
122+
showInternetNeededDialog();
123+
}
118124
}
119125

120126
public class DownloadResultBroadcastReceiver extends BroadcastReceiver {
@@ -145,11 +151,11 @@ public void onReceive(Context context, Intent intent) {
145151
protected void onResume() {
146152
super.onResume();
147153
currentLocale = PropertyHolder.getLocale();
148-
if(PropertyHolder.getLastUpdateGeneralMap() > 0L && PropertyHolder.getLastUpdateGeneralReferences() >= 0L){
154+
if(PropertyHolder.getLastUpdateGeneralMap() > 0L && PropertyHolder.getLastUpdateGeneralReferences() >= 0L && (Util.isOnline(context) || PropertyHolder.isGoogleMapsOfflineReady())){
149155
refreshMapView();
150156
}
151157
}
152-
158+
153159
@Override
154160
public boolean onCreateOptionsMenu(Menu menu){
155161
MenuInflater inflater = getMenuInflater();
@@ -224,10 +230,13 @@ public boolean onOptionsItemSelected(MenuItem item){
224230

225231
@Override
226232
protected void onDestroy() {
227-
super.onDestroy();
228-
if(tileProvider!=null){
229-
tileProvider.close();
230-
}
233+
if(mDownloadResultBroadcastReceiver != null){
234+
LocalBroadcastManager.getInstance(this).unregisterReceiver(mDownloadResultBroadcastReceiver);
235+
}
236+
if(tileProvider!=null){
237+
tileProvider.close();
238+
}
239+
super.onDestroy();
231240
}
232241

233242
public void showItineraryOptions(){
@@ -331,7 +340,7 @@ private void setUpMapIfNeeded() {
331340
.tileProvider(tileProvider));
332341
tileOverlay.setVisible(true);
333342
}
334-
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
343+
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
335344
mMap.setOnMapClickListener(new OnMapClickListener() {
336345
@Override
337346
public void onMapClick(LatLng point) {
@@ -379,7 +388,12 @@ private void setUpCamera(){
379388
}
380389

381390
private void refreshMapView(){
391+
if(mMap != null){
382392
mMap.clear();
393+
} else{
394+
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(
395+
R.id.map)).getMap();
396+
}
383397
if(tileProvider!=null){
384398
tileProvider.close();
385399
}
@@ -440,5 +454,27 @@ private MapBoxOfflineTileProvider initTileProvider() {
440454
}
441455

442456

457+
private void showInternetNeededDialog() {
458+
AlertDialog.Builder builderSingle = new AlertDialog.Builder(
459+
ChooseItineraryActivity.this);
460+
builderSingle.setIcon(R.drawable.ic_launcher);
461+
builderSingle.setTitle(getResources().getString(R.string.internet_needed_title));
462+
builderSingle.setMessage(getResources().getString(R.string.internet_needed_message_content));
463+
builderSingle.setNeutralButton(getResources().getString(R.string.ok),
464+
new DialogInterface.OnClickListener() {
465+
@Override
466+
public void onClick(DialogInterface dialog, int which) {
467+
dialog.dismiss();
468+
Intent i = new Intent(ChooseItineraryActivity.this,
469+
OfficialItinerariesActivity.class);
470+
startActivity(i);
471+
finish();
472+
}
473+
});
474+
475+
builderSingle.show();
476+
}
477+
478+
443479

444480
}

SUDEAU/src/net/movelab/sudeau/DownloadCoreData.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@
1414
import android.support.v4.content.LocalBroadcastManager;
1515
import android.util.Log;
1616

17+
import com.google.android.gms.common.ConnectionResult;
18+
import com.google.android.gms.common.GooglePlayServicesUtil;
19+
import com.google.android.gms.maps.GoogleMap;
20+
import com.google.android.gms.maps.SupportMapFragment;
21+
1722
import net.movelab.sudeau.database.DataBaseHelper;
1823
import net.movelab.sudeau.database.DataContainer;
1924
import net.movelab.sudeau.model.FileManifest;

SUDEAU/src/net/movelab/sudeau/PropertyHolder.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class PropertyHolder {
3939
public static final String TRIP_IN_PROGRESS_FOLLOWING = "TRIP_IN_PROGRESS_FOLLOWING";
4040
public static final String TRIP_IN_PROGRESS_TRACKING = "TRIP_IN_PROGRESS_TRACKING";
4141
public static final String TRIP_IN_PROGRESS_MODE = "TRIP_IN_PROGRESS_MODE";
42+
public static final String GOOGLE_MAPS_OFFLINE_READY = "GOOGLE_MAPS_OFFLINE_READY";
4243

4344
public static final String CORE_DATA_STATUS = "CORE_DATA_STATUS";
4445
public static final String ROUTE_CONTENT_STATUS_PREFIX = "ROUTE_CONTENT_STATUS_ROUTE";
@@ -175,6 +176,16 @@ public static void setSyncAlarmOn(boolean _alarm_on) {
175176
}
176177

177178

179+
public static boolean isGoogleMapsOfflineReady() {
180+
return sharedPreferences.getBoolean(GOOGLE_MAPS_OFFLINE_READY, false);
181+
}
182+
183+
public static void setGoogleMapsOfflineReady(boolean _isReady) {
184+
editor.putBoolean(GOOGLE_MAPS_OFFLINE_READY, _isReady);
185+
editor.apply();
186+
}
187+
188+
178189
public static boolean isRegistered() {
179190
return sharedPreferences.getBoolean(IS_REGISTERED, false);
180191
}
@@ -292,4 +303,5 @@ public static void setRouteContentStatus(int route_id, int status_code){
292303

293304

294305

306+
295307
}

SUDEAU/src/net/movelab/sudeau/Switchboard.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
import android.view.View;
1313
import android.widget.Button;
1414

15+
import com.google.android.gms.common.ConnectionResult;
16+
import com.google.android.gms.common.GooglePlayServicesUtil;
17+
import com.google.android.gms.maps.GoogleMap;
18+
import com.google.android.gms.maps.SupportMapFragment;
19+
1520

1621
public class Switchboard extends FragmentActivity {
1722

@@ -45,6 +50,22 @@ protected void onCreate(Bundle savedInstanceState) {
4550
context.getString(R.string.internal_message_id)
4651
+ Util.MESSAGE_START_SYNC));
4752
}
53+
54+
if(!PropertyHolder.isGoogleMapsOfflineReady() && Util.isOnline(context)){
55+
// do initial connect to Google Play Services so that map works offline
56+
int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getBaseContext());
57+
if (status == ConnectionResult.SUCCESS) {
58+
SupportMapFragment supportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
59+
if(supportMapFragment != null){
60+
GoogleMap gm = supportMapFragment.getMap();
61+
if(gm != null){
62+
PropertyHolder.setGoogleMapsOfflineReady(true);
63+
gm = null;
64+
}
65+
}
66+
}
67+
}
68+
4869
}
4970

5071
@Override

0 commit comments

Comments
 (0)