First draft of ping callback

This commit is contained in:
Bennet Brunsen committed 2015-06-25 17:49:47 +02:00
1 parent 41231b1a23
commit fd7de898a9
4 files changed
+46 -8

No files matched your search

@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="database_changed" translatable="false">database_changed</string>
<string name="ping_reached_server" translatable="false">ping_reached_server</string>
</resources>
@@ -1,7 +1,5 @@
package com.sap.sailing.android.buoy.positioning.app.ui.fragments;
import java.text.DecimalFormat;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -17,7 +15,6 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Toast;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
@@ -27,6 +24,7 @@ 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.GeneralDatabaseHelperException;
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;
@@ -36,7 +34,10 @@ import com.sap.sailing.android.shared.ui.customviews.OpenSansTextView;
import com.sap.sailing.android.shared.ui.customviews.SignalQualityIndicatorView;
import com.sap.sailing.android.ui.fragments.BaseFragment;
import java.text.DecimalFormat;
public class BuoyFragment extends BaseFragment implements LocationListener {
private static final String TAG = BuoyFragment.class.getName();
private static final int GPS_MIN_DISTANCE = 1;
private static final int GPS_MIN_TIME = 1000;
private OpenSansTextView markHeaderTextView;
@@ -241,6 +242,10 @@ public class BuoyFragment extends BaseFragment implements LocationListener {
}
public void handleSuccessfulResponse(){
Toast.makeText(getActivity(), getString(R.string.position_set), Toast.LENGTH_SHORT).show();
}
public void setPingListener(pingListener listener) {
pingListener = listener;
}
@@ -274,13 +279,13 @@ public class BuoyFragment extends BaseFragment implements LocationListener {
MarkInfo mark = positioningActivity.getMarkInfo();
LeaderboardInfo leaderBoard = positioningActivity.getLeaderBoard();
helper.storePingInDatabase(getActivity(), lastKnownLocation, mark);
helper.sendPingToServer(getActivity(), lastKnownLocation, leaderBoard, mark);
helper.sendPingToServer(getActivity(), lastKnownLocation, leaderBoard, mark, PingServerReplyCallback.class);
((PositioningActivity) getActivity()).updatePing();
savedPosition = new LatLng(lastKnownLocation.getLatitude(), lastKnownLocation.getLongitude());
pingListener.updatePing();
setUpTextUI(lastKnownLocation);
updateMap();
Toast.makeText(getActivity(), getString(R.string.position_set), Toast.LENGTH_SHORT).show();
//Toast.makeText(getActivity(), getString(R.string.position_set), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "Location is not available yet", Toast.LENGTH_LONG).show();
}
@@ -297,13 +302,17 @@ public class BuoyFragment extends BaseFragment implements LocationListener {
private class IntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(this.getClass().getName(), "Ui will be updated");
String action = intent.getAction();
Log.d(TAG, "Action: " + action);
if(action.equals(getString(R.string.database_changed))) {
positioningActivity.loadDataFromDatabase();
setUpTextUI(lastKnownLocation);
updateMap();
}
if (action.equals(getString(R.string.ping_reached_server))){
Log.d(TAG, "Response reached Buoy Fragment");
handleSuccessfulResponse();
}
}
}
}
@@ -8,15 +8,17 @@ 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.services.sending.MessageSendingService;
import com.sap.sailing.android.shared.services.sending.ServerReplyCallback;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.InputStream;
import java.util.UUID;
public class PingHelper {
private static String TAG = PingHelper.class.getName();
public void sendPingToServer(final Context context, Location location, LeaderboardInfo leaderBoard, MarkInfo mark) {
public void sendPingToServer(final Context context, Location location, LeaderboardInfo leaderBoard, MarkInfo mark, Class<? extends ServerReplyCallback> callback) {
AppPreferences prefs = new AppPreferences(context);
try {
JSONObject fixJson = new JSONObject();
@@ -29,7 +31,7 @@ public class PingHelper {
String postUrlStr = leaderBoard.serverUrl + prefs.getServerMarkPingPath(leaderBoard.name, mark.getId());
context.startService(MessageSendingService.createMessageIntent(context, postUrlStr, null,
UUID.randomUUID(), fixJson.toString(), null));
UUID.randomUUID(), fixJson.toString(), callback));
} catch (JSONException ex) {
ExLog.i(context, TAG, "Error while building ping json " + ex.getMessage());
@@ -0,0 +1,26 @@
package com.sap.sailing.android.buoy.positioning.app.util;
import android.content.Context;
import android.content.Intent;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import com.sap.sailing.android.buoy.positioning.app.R;
import com.sap.sailing.android.shared.services.sending.ServerReplyCallback;
import java.io.InputStream;
public class PingServerReplyCallback implements ServerReplyCallback {
private static final String TAG = PingServerReplyCallback.class.getName();
// Empty constructor for MessageSendingService
public PingServerReplyCallback() {
}
@Override
public void processResponse(Context context, InputStream inputStream, String callbackPayload) {
Log.d(TAG, "Context origin:");
LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent(context.getString(R.string.ping_reached_server)));
}
}