Merge branch 'master' into permission-vertical

Change-Id: I414d5a1500b920fdc2626a52edeb9f4ff1a49398
This commit is contained in:
Axel Uhl
2019-03-28 16:53:10 +01:00
2 changed files with 48 additions and 30 deletions
@@ -1,25 +1,5 @@
package com.sap.sailing.android.buoy.positioning.app.ui.fragments;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.sap.sailing.android.buoy.positioning.app.R;
import com.sap.sailing.android.buoy.positioning.app.ui.activities.PositioningActivity;
import com.sap.sailing.android.buoy.positioning.app.util.PingHelper;
import com.sap.sailing.android.buoy.positioning.app.util.PingServerReplyCallback;
import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkInfo;
import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkPingInfo;
import com.sap.sailing.android.shared.data.LeaderboardInfo;
import com.sap.sailing.android.shared.logging.ExLog;
import com.sap.sailing.android.shared.ui.customviews.GPSQuality;
import com.sap.sailing.android.shared.ui.customviews.SignalQualityIndicatorView;
import com.sap.sailing.android.shared.ui.fragments.BaseFragment;
import com.sap.sailing.android.shared.util.LocationHelper;
import com.sap.sailing.android.shared.util.ViewHelper;
import android.Manifest;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -28,6 +8,7 @@ import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
@@ -41,6 +22,30 @@ import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.sap.sailing.android.buoy.positioning.app.R;
import com.sap.sailing.android.buoy.positioning.app.ui.activities.PositioningActivity;
import com.sap.sailing.android.buoy.positioning.app.util.DatabaseHelper;
import com.sap.sailing.android.buoy.positioning.app.util.PingHelper;
import com.sap.sailing.android.buoy.positioning.app.util.PingServerReplyCallback;
import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkInfo;
import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkPingInfo;
import com.sap.sailing.android.shared.data.CheckinUrlInfo;
import com.sap.sailing.android.shared.data.LeaderboardInfo;
import com.sap.sailing.android.shared.logging.ExLog;
import com.sap.sailing.android.shared.ui.customviews.GPSQuality;
import com.sap.sailing.android.shared.ui.customviews.SignalQualityIndicatorView;
import com.sap.sailing.android.shared.ui.fragments.BaseFragment;
import com.sap.sailing.android.shared.util.LocationHelper;
import com.sap.sailing.android.shared.util.ViewHelper;
import static com.sap.sailing.domain.common.racelog.tracking.DeviceMappingConstants.URL_SECRET;
public class BuoyFragment extends BaseFragment implements android.location.LocationListener, OnMapReadyCallback {
private static final String TAG = BuoyFragment.class.getName();
@@ -309,9 +314,11 @@ public class BuoyFragment extends BaseFragment implements android.location.Locat
if (lastKnownLocation != null) {
MarkInfo mark = positioningActivity.getMarkInfo();
LeaderboardInfo leaderBoard = positioningActivity.getLeaderBoard();
CheckinUrlInfo checkinUrl = DatabaseHelper.getInstance().getCheckinUrl(requireContext(), leaderBoard.checkinDigest);
String secret = Uri.parse(checkinUrl.urlString).getQueryParameter(URL_SECRET);
helper.storePingInDatabase(getActivity(), lastKnownLocation, mark);
helper.sendPingToServer(getActivity(), lastKnownLocation, leaderBoard, mark,
PingServerReplyCallback.class);
secret, PingServerReplyCallback.class);
((PositioningActivity) getActivity()).updatePing();
savedPosition = new LatLng(lastKnownLocation.getLatitude(), lastKnownLocation.getLongitude());
pingListener.updatePing();
@@ -1,9 +1,8 @@
package com.sap.sailing.android.buoy.positioning.app.util;
import java.util.UUID;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Context;
import android.location.Location;
import android.net.Uri;
import com.sap.sailing.android.buoy.positioning.app.util.DatabaseHelper.GeneralDatabaseHelperException;
import com.sap.sailing.android.buoy.positioning.app.valueobjects.MarkInfo;
@@ -15,22 +14,34 @@ import com.sap.sailing.android.shared.services.sending.ServerReplyCallback;
import com.sap.sailing.domain.common.tracking.impl.FlatSmartphoneUuidAndGPSFixMovingJsonSerializer;
import com.sap.sailing.domain.common.tracking.impl.GPSFixImpl;
import android.content.Context;
import android.location.Location;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.UUID;
import static com.sap.sailing.domain.common.racelog.tracking.DeviceMappingConstants.URL_SECRET;
public class PingHelper {
private static String TAG = PingHelper.class.getName();
public void sendPingToServer(final Context context, Location location, LeaderboardInfo leaderBoard, MarkInfo mark,
Class<? extends ServerReplyCallback> callback) {
String secret, Class<? extends ServerReplyCallback> callback) {
AppPreferences prefs = new AppPreferences(context);
try {
JSONObject fixJson = new JSONObject();
fixJson.put(FlatSmartphoneUuidAndGPSFixMovingJsonSerializer.TIME_MILLIS, location.getTime());
fixJson.put(FlatSmartphoneUuidAndGPSFixMovingJsonSerializer.LON_DEG, location.getLongitude());
fixJson.put(FlatSmartphoneUuidAndGPSFixMovingJsonSerializer.LAT_DEG, location.getLatitude());
String postUrlStr = leaderBoard.serverUrl
+ prefs.getServerMarkPingPath(leaderBoard.name, mark.getId().toString());
Uri uri = Uri.parse(leaderBoard.serverUrl);
Uri.Builder builder = new Uri.Builder()
.scheme(uri.getScheme())
.authority(uri.getAuthority())
.appendEncodedPath(prefs.getServerMarkPingPath(leaderBoard.name, mark.getId().toString()));
if (secret != null) {
builder.appendQueryParameter(URL_SECRET, secret);
}
String postUrlStr = builder.build().toString();
context.startService(MessageSendingService.createMessageIntent(context, postUrlStr, null, UUID.randomUUID(),
fixJson.toString(), callback));