diff --git a/mobile/com.sap.sailing.android.shared/.settings/org.eclipse.jdt.core.prefs b/mobile/com.sap.sailing.android.shared/.settings/org.eclipse.jdt.core.prefs index 54e493c07c9..980b98c1d5f 100644 --- a/mobile/com.sap.sailing.android.shared/.settings/org.eclipse.jdt.core.prefs +++ b/mobile/com.sap.sailing.android.shared/.settings/org.eclipse.jdt.core.prefs @@ -1,11 +1,12 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/mobile/com.sap.sailing.android.shared/AndroidManifest.xml b/mobile/com.sap.sailing.android.shared/AndroidManifest.xml index a623b7ef3fe..d6035afee9f 100644 --- a/mobile/com.sap.sailing.android.shared/AndroidManifest.xml +++ b/mobile/com.sap.sailing.android.shared/AndroidManifest.xml @@ -3,6 +3,6 @@ android:versionCode="1" android:versionName="1.0"> - + diff --git a/mobile/com.sap.sailing.android.shared/pom.xml b/mobile/com.sap.sailing.android.shared/pom.xml index 3b828640040..f8b9b21d2cd 100644 --- a/mobile/com.sap.sailing.android.shared/pom.xml +++ b/mobile/com.sap.sailing.android.shared/pom.xml @@ -69,7 +69,7 @@ android-maven-plugin - 13 + 19 diff --git a/mobile/com.sap.sailing.android.shared/project.properties b/mobile/com.sap.sailing.android.shared/project.properties index 47854331abc..369bd645175 100755 --- a/mobile/com.sap.sailing.android.shared/project.properties +++ b/mobile/com.sap.sailing.android.shared/project.properties @@ -11,6 +11,6 @@ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt # Project target. -target=android-13 +target=android-19 android.library=true diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/ConnectivityChangedReceiver.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/ConnectivityChangedReceiver.java index 9e8b57626d0..679bcadbeb3 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/ConnectivityChangedReceiver.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/ConnectivityChangedReceiver.java @@ -35,7 +35,9 @@ public class ConnectivityChangedReceiver extends BroadcastReceiver { */ @Override public void onReceive(Context context, Intent intent) { - NetworkInfo networkInfo = (NetworkInfo)intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); + ConnectivityManager cService = (ConnectivityManager) + context.getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo networkInfo = (NetworkInfo) cService.getActiveNetworkInfo(); if (!networkInfo.isConnected()) return; context.startService(MessageSendingService.createSendDelayedIntent(context)); diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessagePersistenceManager.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessagePersistenceManager.java index 9ff8aae8a8f..eb37655aadf 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessagePersistenceManager.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessagePersistenceManager.java @@ -4,6 +4,7 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.ArrayList; @@ -38,7 +39,7 @@ public class MessagePersistenceManager { return !persistedMessages.isEmpty(); } - public void persistIntent(Intent intent) { + public void persistIntent(Intent intent) throws UnsupportedEncodingException { Bundle extras = intent.getExtras(); String callbackPayload = extras.getString(MessageSendingService.CALLBACK_PAYLOAD); String url = extras.getString(MessageSendingService.URL); @@ -47,7 +48,7 @@ public class MessagePersistenceManager { persistMessage(url, callbackPayload, payload, callbackClass); } - private void persistMessage(String url, String callbackPayload, String payload, String callbackClass) { + private void persistMessage(String url, String callbackPayload, String payload, String callbackClass) throws UnsupportedEncodingException { String messageLine = getSerializedIntentForPersistence(url, callbackPayload, payload, callbackClass); ExLog.i(context, TAG, String.format("Persisting message \"%s\".", messageLine)); if (persistedMessages.contains(messageLine)) { @@ -59,15 +60,17 @@ public class MessagePersistenceManager { /** * @param payload will be URL-encoded to ensure that the resulting string does not contain newlines + * @throws UnsupportedEncodingException */ private String getSerializedIntentForPersistence(String url, String callbackPayload, - String payload, String callbackClass) { - String messageLine = String.format("%s;%s;%s;%s", callbackPayload, URLEncoder.encode(payload), + String payload, String callbackClass) throws UnsupportedEncodingException { + String messageLine = String.format("%s;%s;%s;%s", callbackPayload, URLEncoder.encode(payload, + MessageSendingService.charsetName), url, callbackClass); return messageLine; } - public void removeIntent(Intent intent) { + public void removeIntent(Intent intent) throws UnsupportedEncodingException { Bundle extras = intent.getExtras(); String url = extras.getString(MessageSendingService.URL); String callbackPayload = extras.getString(MessageSendingService.CALLBACK_PAYLOAD); @@ -76,7 +79,7 @@ public class MessagePersistenceManager { removeMessage(url, callbackPayload, payload, callbackClass); } - private void removeMessage(String url, String callbackPayload, String payload, String callbackClass) { + private void removeMessage(String url, String callbackPayload, String payload, String callbackClass) throws UnsupportedEncodingException { if (!persistedMessages.isEmpty()) { ExLog.i(context, TAG, String.format("Removing message \"%s\".", payload)); String messageLine = getSerializedIntentForPersistence(url, callbackPayload, payload, callbackClass); @@ -112,13 +115,13 @@ public class MessagePersistenceManager { void restoreMessage(Context context, Intent messageIntent); } - public List restoreMessages() { + public List restoreMessages() throws UnsupportedEncodingException { List delayedIntents = new ArrayList(); for (String persistedMessage : persistedMessages) { String[] lineParts = persistedMessage.split(";"); String url = lineParts[2]; String callbackPayload = lineParts[0]; - String payload = URLDecoder.decode(lineParts[1]); + String payload = URLDecoder.decode(lineParts[1], MessageSendingService.charsetName); String callbackClassString = lineParts[3]; Class callbackClass = null; diff --git a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessageSendingService.java b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessageSendingService.java index 6b19eb0ee6b..50845320c3c 100644 --- a/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessageSendingService.java +++ b/mobile/com.sap.sailing.android.shared/src/com/sap/sailing/android/shared/services/sending/MessageSendingService.java @@ -2,6 +2,7 @@ package com.sap.sailing.android.shared.services.sending; import java.io.InputStream; import java.io.Serializable; +import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Calendar; import java.util.Date; @@ -61,6 +62,8 @@ public class MessageSendingService extends Service implements MessageSendingList public final static String CALLBACK_CLASS = "callback"; public final static String CALLBACK_PAYLOAD = "callbackPayload"; // passed back to callback public final static String MESSAGE_ID = "messageId"; + + public static final String charsetName = "UTF=8"; protected final static String TAG = MessageSendingService.class.getName(); @@ -225,7 +228,11 @@ public class MessageSendingService extends Service implements MessageSendingList ExLog.i(this, TAG, String.format("Trying to send a message...")); if (!isConnected()) { ExLog.i(this, TAG, String.format("Send aborted because there is no connection.")); - persistenceManager.persistIntent(intent); + try { + persistenceManager.persistIntent(intent); + } catch (UnsupportedEncodingException e) { + ExLog.e(this, TAG, "Could not persist message (unsupported encoding)"); + } ConnectivityChangedReceiver.enable(this); serviceLogger.onMessageSentFailed(); } else { @@ -246,10 +253,14 @@ public class MessageSendingService extends Service implements MessageSendingList } private void sendDelayedMessages() { - List delayedIntents = persistenceManager.restoreMessages(); - ExLog.i(this, TAG, String.format("Resending %d messages...", delayedIntents.size())); - for (Intent intent : delayedIntents) { - sendMessage(intent); + try { + List delayedIntents = persistenceManager.restoreMessages(); + ExLog.i(this, TAG, String.format("Resending %d messages...", delayedIntents.size())); + for (Intent intent : delayedIntents) { + sendMessage(intent); + } + } catch (UnsupportedEncodingException e) { + ExLog.e(this, TAG, "Could not restore messages (unsupported encoding)"); } } @@ -276,7 +287,11 @@ public class MessageSendingService extends Service implements MessageSendingList R.integer.preference_messageResendIntervalMillis_default); if (!success) { ExLog.w(this, TAG, "Error while posting intent to server. Will persist intent..."); - persistenceManager.persistIntent(intent); + try { + persistenceManager.persistIntent(intent); + } catch (UnsupportedEncodingException e) { + ExLog.e(this, TAG, "Could not store message (unsupported encoding)"); + } if (!isHandlerSet) { SendDelayedMessagesCaller delayedCaller = new SendDelayedMessagesCaller(this); handler.postDelayed(delayedCaller, resendMillis); // after 30 sec, try the sending again @@ -286,7 +301,11 @@ public class MessageSendingService extends Service implements MessageSendingList } else { ExLog.i(this, TAG, "Message successfully sent."); if (persistenceManager.areIntentsDelayed()) { - persistenceManager.removeIntent(intent); + try { + persistenceManager.removeIntent(intent); + } catch (UnsupportedEncodingException e) { + ExLog.e(this, TAG, "Could not remove message (unsupported encoding)"); + } } lastSuccessfulSend = Calendar.getInstance().getTime(); serviceLogger.onMessageSentSuccessful(); @@ -327,15 +346,15 @@ public class MessageSendingService extends Service implements MessageSendingList public final static UUID uuid = UUID.randomUUID(); public static String getRaceLogEventSendAndReceiveUrl(Context context, final String raceGroupName, - final String raceName, final String fleetName) { + final String raceName, final String fleetName) throws UnsupportedEncodingException { String url = String.format("%s/sailingserver/rc/racelog?"+ RaceLogServletConstants.PARAMS_LEADERBOARD_NAME+"=%s&"+ RaceLogServletConstants.PARAMS_RACE_COLUMN_NAME+"=%s&"+ RaceLogServletConstants.PARAMS_RACE_FLEET_NAME+"=%s&"+ RaceLogServletConstants.PARAMS_CLIENT_UUID+"=%s", PrefUtils.getString(context, R.string.preference_server_url_key, R.string.preference_server_url_default), - URLEncoder.encode(raceGroupName), - URLEncoder.encode(raceName), URLEncoder.encode(fleetName), uuid); + URLEncoder.encode(raceGroupName, charsetName), + URLEncoder.encode(raceName, charsetName), URLEncoder.encode(fleetName, charsetName), uuid); return url; } } diff --git a/mobile/com.sap.sailing.android.tracking.app/.settings/org.eclipse.jdt.core.prefs b/mobile/com.sap.sailing.android.tracking.app/.settings/org.eclipse.jdt.core.prefs index b080d2ddc88..d17b6724d17 100644 --- a/mobile/com.sap.sailing.android.tracking.app/.settings/org.eclipse.jdt.core.prefs +++ b/mobile/com.sap.sailing.android.tracking.app/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,12 @@ eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/mobile/com.sap.sailing.android.tracking.app/AndroidManifest.xml b/mobile/com.sap.sailing.android.tracking.app/AndroidManifest.xml index bf9082551ff..f4c6bd71d2c 100644 --- a/mobile/com.sap.sailing.android.tracking.app/AndroidManifest.xml +++ b/mobile/com.sap.sailing.android.tracking.app/AndroidManifest.xml @@ -5,8 +5,8 @@ android:versionName="1 - Altitude" > + android:minSdkVersion="19" + android:targetSdkVersion="21" /> diff --git a/mobile/com.sap.sailing.android.tracking.app/project.properties b/mobile/com.sap.sailing.android.tracking.app/project.properties index 5186891db89..6e3def9a6b2 100644 --- a/mobile/com.sap.sailing.android.tracking.app/project.properties +++ b/mobile/com.sap.sailing.android.tracking.app/project.properties @@ -11,6 +11,6 @@ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt # Project target. -target=Google Inc.:Google APIs:13 +target=Google Inc.:Google APIs:19 android.library.reference.1=../google-play-services_lib android.library.reference.2=../com.sap.sailing.android.shared diff --git a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/services/TrackingService.java b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/services/TrackingService.java index 2332d865031..bb15dd27a06 100644 --- a/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/services/TrackingService.java +++ b/mobile/com.sap.sailing.android.tracking.app/src/com/sap/sailing/android/tracking/app/services/TrackingService.java @@ -144,11 +144,17 @@ public class TrackingService extends Service implements ConnectionCallbacks, OnC private void showNotification() { CharSequence text = getText(R.string.tracker_started); - Notification notification = new Notification(R.drawable.icon, text, System.currentTimeMillis()); Intent i = new Intent(this, LaunchActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); PendingIntent pi = PendingIntent.getActivity(this, 0, i, 0); - notification.setLatestEventInfo(this, getText(R.string.app_name), text, pi); + Notification notification = new Notification.Builder(this) + .setSmallIcon(R.drawable.icon) + .setTicker(text) + .setWhen(System.currentTimeMillis()) + .setContentTitle(getText(R.string.app_name)) + .setContentText(text) + .setContentIntent(pi) + .build(); notification.flags |= Notification.FLAG_NO_CLEAR; startForeground(NOTIFICATION_ID, notification); } diff --git a/mobile/com.sap.sailing.racecommittee.app/.settings/org.eclipse.jdt.core.prefs b/mobile/com.sap.sailing.racecommittee.app/.settings/org.eclipse.jdt.core.prefs index b080d2ddc88..d17b6724d17 100644 --- a/mobile/com.sap.sailing.racecommittee.app/.settings/org.eclipse.jdt.core.prefs +++ b/mobile/com.sap.sailing.racecommittee.app/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,12 @@ eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/mobile/com.sap.sailing.racecommittee.app/AndroidManifest.xml b/mobile/com.sap.sailing.racecommittee.app/AndroidManifest.xml index 46d905b3b47..a93e148ec32 100644 --- a/mobile/com.sap.sailing.racecommittee.app/AndroidManifest.xml +++ b/mobile/com.sap.sailing.racecommittee.app/AndroidManifest.xml @@ -2,12 +2,11 @@ + android:versionName="6 - Laser" xmlns:tools="http://schemas.android.com/tools"> + android:minSdkVersion="19" + android:targetSdkVersion="19" tools:ignore="OldTargetApi"/> >(context, new URL(preferences.getServerBaseURL() + "/sailingserver/rc/marks?"+RaceLogServletConstants.PARAMS_LEADERBOARD_NAME + "=" + raceGroupName + @@ -188,9 +188,9 @@ public class OnlineDataManager extends DataManager { ManagedRaceIdentifier identifier = managedRace.getIdentifier(); - String raceGroupName = URLEncoder.encode(identifier.getRaceGroup().getName()); - String raceColumnName = URLEncoder.encode(identifier.getRaceName()); - String fleetName = URLEncoder.encode(identifier.getFleet().getName()); + String raceGroupName = URLEncoder.encode(identifier.getRaceGroup().getName(), MessageSendingService.charsetName); + String raceColumnName = URLEncoder.encode(identifier.getRaceName(), MessageSendingService.charsetName); + String fleetName = URLEncoder.encode(identifier.getFleet().getName(), MessageSendingService.charsetName); return new OnlineDataLoader(context, new URL(preferences.getServerBaseURL() + "/sailingserver/rc/currentcourse?" + RaceLogServletConstants.PARAMS_LEADERBOARD_NAME + "=" @@ -216,9 +216,9 @@ public class OnlineDataManager extends DataManager { ManagedRaceIdentifier identifier = managedRace.getIdentifier(); - String raceGroupName = URLEncoder.encode(identifier.getRaceGroup().getName()); - String raceColumnName = URLEncoder.encode(identifier.getRaceName()); - String fleetName = URLEncoder.encode(identifier.getFleet().getName()); + String raceGroupName = URLEncoder.encode(identifier.getRaceGroup().getName(), MessageSendingService.charsetName); + String raceColumnName = URLEncoder.encode(identifier.getRaceName(), MessageSendingService.charsetName); + String fleetName = URLEncoder.encode(identifier.getFleet().getName(), MessageSendingService.charsetName); return new OnlineDataLoader>(context, new URL( preferences.getServerBaseURL() + "/sailingserver/rc/competitors?" @@ -240,7 +240,7 @@ public class OnlineDataManager extends DataManager { DataHandler handler = new NullDataHandler(); DataParser parser = new DeviceConfigurationParser(DeviceConfigurationJsonDeserializer.create()); - String encodedIdentifier = URLEncoder.encode(identifier.getClientIdentifier()); + String encodedIdentifier = URLEncoder.encode(identifier.getClientIdentifier(), MessageSendingService.charsetName); encodedIdentifier = encodedIdentifier.replace("+", "%20"); return new OnlineDataLoader( diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/services/polling/RaceLogPoller.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/services/polling/RaceLogPoller.java index f1778bca1d1..4d2431adc18 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/services/polling/RaceLogPoller.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/services/polling/RaceLogPoller.java @@ -2,6 +2,7 @@ package com.sap.sailing.racecommittee.app.services.polling; import java.io.InputStream; import java.io.Serializable; +import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; @@ -64,12 +65,12 @@ public class RaceLogPoller implements PollingActiveChangedListener { this.hasRacesToPoll = true; ExLog.i(context, TAG, String.format("Registered race %s for polling, will start in %d milliseconds.", race.getId(), pollingInterval)); - } catch (MalformedURLException e) { + } catch (MalformedURLException | UnsupportedEncodingException e) { ExLog.e(context, TAG, String.format("Unable to create polling URL for race %s: %s", race.getId(), e.getMessage())); } } - private URL createURL(ManagedRace race) throws MalformedURLException { + private URL createURL(ManagedRace race) throws MalformedURLException, UnsupportedEncodingException { return new URL(MessageSendingService.getRaceLogEventSendAndReceiveUrl(context, race.getRaceGroup().getName(), race.getName(), race.getFleet().getName())); } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/services/polling/RaceLogPollerTask.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/services/polling/RaceLogPollerTask.java index 328fb13e39d..4e75e342359 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/services/polling/RaceLogPollerTask.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/services/polling/RaceLogPollerTask.java @@ -27,6 +27,7 @@ public class RaceLogPollerTask extends AsyncTask, P this.context = context; } + @SuppressWarnings("unchecked") @Override protected Void doInBackground(Util.Pair... queries) { for (Util.Pair query : queries) { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/services/sending/EventSendingServiceUtil.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/services/sending/EventSendingServiceUtil.java index d0aac21ab1e..98de3887f0a 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/services/sending/EventSendingServiceUtil.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/services/sending/EventSendingServiceUtil.java @@ -1,6 +1,7 @@ package com.sap.sailing.racecommittee.app.services.sending; import java.io.Serializable; +import java.io.UnsupportedEncodingException; import android.content.Context; import android.content.Intent; @@ -25,7 +26,7 @@ public class EventSendingServiceUtil { * @return the intent that shall be sent to the EventSendingService */ public static Intent createEventIntent(Context context, ManagedRace race, Serializable eventId, String serializedEventAsJson, - Class callbackClass) { + Class callbackClass) throws UnsupportedEncodingException { String url = MessageSendingService.getRaceLogEventSendAndReceiveUrl(context, race.getRaceGroup().getName(), race.getName(), race.getFleet().getName()); return MessageSendingService.createMessageIntent(context, url, race.getId(), eventId, serializedEventAsJson, callbackClass); diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/services/sending/RaceEventSender.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/services/sending/RaceEventSender.java index e441be43ea5..38e760c0b0a 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/services/sending/RaceEventSender.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/services/sending/RaceEventSender.java @@ -1,9 +1,12 @@ package com.sap.sailing.racecommittee.app.services.sending; +import java.io.UnsupportedEncodingException; + import org.json.simple.JSONObject; import android.app.Service; +import com.sap.sailing.android.shared.logging.ExLog; import com.sap.sailing.domain.abstractlog.race.RaceLogChangedListener; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; import com.sap.sailing.racecommittee.app.domain.ManagedRace; @@ -11,6 +14,7 @@ import com.sap.sailing.racecommittee.app.domain.racelog.impl.RaceLogEventsCallba import com.sap.sailing.server.gateway.serialization.JsonSerializer; public class RaceEventSender implements RaceLogChangedListener { + private static final String TAG = RaceEventSender.class.getName(); private final Service service; private final JsonSerializer serializer; @@ -25,7 +29,11 @@ public class RaceEventSender implements RaceLogChangedListener { @Override public void eventAdded(RaceLogEvent event) { JSONObject serializedEvent = serializer.serialize(event); - service.startService(EventSendingServiceUtil.createEventIntent(service, race, event.getId(), - serializedEvent.toJSONString(), RaceLogEventsCallback.class)); + try { + service.startService(EventSendingServiceUtil.createEventIntent(service, race, event.getId(), + serializedEvent.toJSONString(), RaceLogEventsCallback.class)); + } catch (UnsupportedEncodingException e) { + ExLog.e(service, TAG, "Could not create racelog event message (unsupported encoding)"); + } } } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/views/CameraView.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/views/CameraView.java index 0fd7cb1877b..66eeee88fab 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/views/CameraView.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/views/CameraView.java @@ -28,7 +28,6 @@ public class CameraView extends SurfaceView implements SurfaceHolder.Callback { // underlying surface is created and destroyed. surfaceHolder = getHolder(); surfaceHolder.addCallback(this); - surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } public void snap(final PictureCallback pictureHandler) { diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/utils/autoupdate/AutoUpdaterChecker.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/utils/autoupdate/AutoUpdaterChecker.java index 590fe52dd5b..78109ce58ea 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/utils/autoupdate/AutoUpdaterChecker.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/utils/autoupdate/AutoUpdaterChecker.java @@ -44,7 +44,8 @@ public class AutoUpdaterChecker { this.dialog = new ProgressDialog(context); dialog.setTitle(context.getString(R.string.auto_update)); dialog.setCancelable(true); - dialog.setButton(context.getString(android.R.string.cancel), new DialogInterface.OnClickListener() { + dialog.setButton(DialogInterface.BUTTON_POSITIVE, + context.getString(android.R.string.cancel), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { dialog.cancel();