Implemented position fetching and ui updates in Position Activity

This commit is contained in:
Bennet Brunsen committed 2015-03-23 19:48:46 +01:00
1 parent 70cb734532
commit 6a915d49ea
2 files changed
+107 -15

No files matched your search

@@ -8,14 +8,17 @@ import android.support.v7.widget.Toolbar;
import com.sap.sailing.android.buoy.positioning.app.R;
import com.sap.sailing.android.buoy.positioning.app.ui.fragments.BuoyFragment;
import com.sap.sailing.android.buoy.positioning.app.ui.fragments.BuoyFragment.pingListener;
import com.sap.sailing.android.buoy.positioning.app.util.DatabaseHelper;
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;
public class PositioningActivity extends BaseActivity {
public class PositioningActivity extends BaseActivity implements pingListener{
private MarkInfo markInfo;
private MarkPingInfo markPing;
private LeaderboardInfo leaderBoard;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -24,6 +27,7 @@ public class PositioningActivity extends BaseActivity {
String markerID = intent.getExtras().getString(getString(R.string.mark_id));
String checkinDigest = intent.getExtras().getString(getString(R.string.checkin_digest));
List<MarkInfo> marks = DatabaseHelper.getInstance().getMarks(this, checkinDigest);
leaderBoard = DatabaseHelper.getInstance().getLeaderboard(this, checkinDigest);
for(MarkInfo mark : marks)
{
if(mark.getId().equals(markerID))
@@ -34,11 +38,7 @@ public class PositioningActivity extends BaseActivity {
}
if(markInfo != null)
{
List<MarkPingInfo> markPings = DatabaseHelper.getInstance().getMarkPings(this, markerID);
if(!markPings.isEmpty())
{
setMarkPing(markPings.get(0));
}
setPingFromDatabase(markerID);
}
setContentView(R.layout.fragment_container);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
@@ -55,10 +55,20 @@ public class PositioningActivity extends BaseActivity {
getSupportActionBar().setTitle(getString(R.string.title_activity_positioning));
}
}
public void setPingFromDatabase(String markerID) {
List<MarkPingInfo> markPings = DatabaseHelper.getInstance().getMarkPings(this, markerID);
if(!markPings.isEmpty())
{
setMarkPing(markPings.get(0));
}
}
@Override
public void onResume() {
super.onResume();
BuoyFragment fragment = (BuoyFragment) getSupportFragmentManager().findFragmentById(R.id.content_frame);
fragment.setPingListener(this);
}
public MarkInfo getMarkInfo() {
@@ -76,4 +86,17 @@ public class PositioningActivity extends BaseActivity {
public void setMarkPing(MarkPingInfo markPing) {
this.markPing = markPing;
}
public LeaderboardInfo getLeaderBoard() {
return leaderBoard;
}
public void setLeaderBoard(LeaderboardInfo leaderBoard) {
this.leaderBoard = leaderBoard;
}
@Override
public void updatePing() {
setPingFromDatabase(markInfo.getId());
}
}
@@ -1,33 +1,50 @@
package com.sap.sailing.android.buoy.positioning.app.ui.fragments;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import com.google.android.gms.maps.MapFragment;
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.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.ui.customviews.OpenSansButton;
import com.sap.sailing.android.shared.ui.customviews.OpenSansTextView;
import com.sap.sailing.android.ui.fragments.BaseFragment;
public class BuoyFragment extends BaseFragment{
public class BuoyFragment extends BaseFragment implements LocationListener{
private OpenSansTextView markHeaderTextView;
private OpenSansTextView lattitudeTextView;
private OpenSansTextView longitudeTextView;
private OpenSansTextView accuracyTextView;
private OpenSansButton setPositionButton;
private OpenSansButton resetPostionButton;
private MapFragment mapFragment;
private Location lastKnownLocation;
private LocationManager locationManager;
private String locationProvider;
private pingListener pingListener;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.fragment_buoy_postion_detail, container, false);
mapFragment = (MapFragment) getActivity().getFragmentManager().findFragmentById(R.id.map);
markHeaderTextView = (OpenSansTextView) view.findViewById(R.id.mark_header);
lattitudeTextView = (OpenSansTextView) view.findViewById(R.id.marker_gps_latitude);
longitudeTextView = (OpenSansTextView) view.findViewById(R.id.marker_gps_longitude);
@@ -45,19 +62,60 @@ public class BuoyFragment extends BaseFragment{
@Override
public void onResume() {
super.onResume();
initLocationProvider();
MarkInfo mark = ((PositioningActivity)getActivity()).getMarkInfo();
MarkPingInfo markPing = ((PositioningActivity)getActivity()).getMarkPing();
if(mark != null)
{
markHeaderTextView.setText(mark.getName());
if(markPing != null)
{
lattitudeTextView.setText(markPing.getLattitude());
longitudeTextView.setText(markPing.getLongitude());
accuracyTextView.setText("~" + markPing.getAccuracy());
}
setUpPingUI();
}
}
public void setUpPingUI() {
MarkPingInfo markPing = ((PositioningActivity)getActivity()).getMarkPing();
if(markPing != null)
{
lattitudeTextView.setText(markPing.getLattitude());
longitudeTextView.setText(markPing.getLongitude());
accuracyTextView.setText("~" + markPing.getAccuracy());
}
}
@Override
public void onLocationChanged(Location location) {
lastKnownLocation = location;
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
initLocationProvider();
}
@Override
public void onProviderEnabled(String provider) {
initLocationProvider();
}
@Override
public void onProviderDisabled(String provider) {
initLocationProvider();
}
private void initLocationProvider() {
locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
locationManager.removeUpdates(this);
locationProvider = locationManager.getBestProvider(new Criteria(), true);
locationManager.requestLocationUpdates(locationProvider, 60000, 10, this);
}
public void setPingListener(pingListener listener)
{
pingListener = listener;
}
public interface pingListener{
public void updatePing();
}
private class Clicklistener implements OnClickListener{
@@ -66,7 +124,17 @@ public class BuoyFragment extends BaseFragment{
int id = v.getId();
if(id == R.id.marker_set_position_button)
{
// Set Position
PingHelper helper = new PingHelper();
try {
MarkInfo mark = ((PositioningActivity)getActivity()).getMarkInfo();
LeaderboardInfo leaderboard = ((PositioningActivity)getActivity()).getLeaderBoard();
helper.storePingInDatabase(getActivity(), lastKnownLocation, mark);
helper.sendPingToServer(getActivity(), lastKnownLocation, leaderboard, mark);
pingListener.updatePing();
setUpPingUI();
} catch (GeneralDatabaseHelperException e) {
e.printStackTrace();
}
}
else if(id == R.id.marker_reset_position_button)
{
@@ -77,4 +145,5 @@ public class BuoyFragment extends BaseFragment{
}
}