diff --git a/mobile/com.sap.sailing.android.tracking.app/res/values/api_endpoints.xml b/mobile/com.sap.sailing.android.tracking.app/res/values/api_endpoints.xml
index ae34b09d2a4..225828fe12e 100644
--- a/mobile/com.sap.sailing.android.tracking.app/res/values/api_endpoints.xml
+++ b/mobile/com.sap.sailing.android.tracking.app/res/values/api_endpoints.xml
@@ -6,5 +6,6 @@
/sailingserver/api/v1/events/{event_id}
/sailingserver/api/v1/leaderboards/{leaderboard_name}
/sailingserver/api/v1/competitors/{competitor_id}
+ /sailingserver/api/v1/competitors/{competitor_id}/team
/sailingserver/api/v1/competitors/{competitor_id}/team/image
diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/RegattaActivity.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/RegattaActivity.java
index 6588c66e2e7..8f7b7dd52e0 100755
--- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/RegattaActivity.java
+++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/ui/activities/RegattaActivity.java
@@ -20,6 +20,7 @@ import android.widget.Toast;
import com.sap.sailing.android.shared.data.AbstractCheckinData;
import com.sap.sailing.android.shared.data.CheckinUrlInfo;
import com.sap.sailing.android.shared.data.LeaderboardInfo;
+import com.sap.sailing.android.shared.data.http.HttpGetRequest;
import com.sap.sailing.android.shared.data.http.HttpJsonPostRequest;
import com.sap.sailing.android.shared.logging.ExLog;
import com.sap.sailing.android.shared.ui.activities.AbstractRegattaActivity;
@@ -220,9 +221,7 @@ public class RegattaActivity extends AbstractRegattaActivity implements RegattaF
ImageView imageView = (ImageView) findViewById(R.id.userImage);
Bitmap storedImage = getStoredImage(getLeaderboardImageFileName(leaderboard.name));
if (storedImage == null) {
- if (event.imageUrl != null) {
- new DownloadLeaderboardImageTask(imageView).execute(event.imageUrl);
- }
+ askServerAboutTeamImageUrl(imageView);
} else {
imageView.setImageBitmap(storedImage);
userImageUpdated();
@@ -240,6 +239,43 @@ public class RegattaActivity extends AbstractRegattaActivity implements RegattaF
}
}
+ public void askServerAboutTeamImageUrl(final ImageView imageView){
+ try {
+ URL url = new URL(checkinUrl.urlString);
+ StringBuilder sb = new StringBuilder("http://");
+ sb.append(url.getHost());
+ sb.append(":");
+ sb.append((url.getPort() == -1) ? 80 : url.getPort());
+ sb.append(prefs.getServerCompetiorTeamPath(competitor.id));
+
+ HttpGetRequest getCompetitorTeamRequest = new HttpGetRequest(new URL(sb.toString()), this);
+ NetworkHelper.getInstance(this).executeHttpJsonRequestAsnchronously(getCompetitorTeamRequest, new NetworkHelperSuccessListener() {
+ @Override
+ public void performAction(JSONObject response) {
+ try {
+ String teamImageUri = response.getString("imageUri");
+ if (teamImageUri != null) {
+ new DownloadLeaderboardImageTask(imageView).execute(teamImageUri);
+ }
+ }
+ catch (JSONException e) {
+ ExLog.e(getApplicationContext(), TAG, "Error: Failed to get teamImageURL: " + e.getMessage());
+ }
+ }
+ }, new NetworkHelperFailureListener() {
+ @Override
+ public void performAction(NetworkHelperError e) {
+ ExLog.e(getApplicationContext(), TAG,
+ "Error: Failed to get teamImageURL: " + e.getMessage());
+ }
+ });
+
+ } catch (MalformedURLException e) {
+ ExLog.e(this, TAG,
+ "Error: Failed to perform checking due to a MalformedURLException: " + e.getMessage());
+ }
+ }
+
/**
* @param bitmap
*/
diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/utils/AppPreferences.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/utils/AppPreferences.java
index b2fe1e5a756..269b6dd6990 100644
--- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/utils/AppPreferences.java
+++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/utils/AppPreferences.java
@@ -50,6 +50,11 @@ public class AppPreferences extends BaseAppPreferences {
competitorId);
}
+ public String getServerCompetiorTeamPath(String competitorId){
+ return context.getString(R.string.preference_server_team_info_path, "/competitors").replace("{competitor_id}",
+ competitorId);
+ }
+
public int getGPSFixInterval() {
// EditTextPreference saves value as string, even if android:inputType="number" is set
String value = PrefUtils.getString(context, R.string.preference_gps_fix_interval_ms_key,