mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-01 00:30:46 +00:00
Implemented position fetching and ui updates in Position Activity
This commit is contained in:
1 parent
70cb734532
commit
6a915d49ea
2 files changed
+107
-15
No files matched your search
+29
-6
@@ -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());
|
||||
}
|
||||
}
|
||||
+78
-9
@@ -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{
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user