diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 0000000..e889521 --- /dev/null +++ b/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,2 @@ +connection.project.dir= +eclipse.preferences.version=1 diff --git a/app/.classpath b/app/.classpath new file mode 100644 index 0000000..eb19361 --- /dev/null +++ b/app/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/.settings/org.eclipse.buildship.core.prefs b/app/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 0000000..b1886ad --- /dev/null +++ b/app/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,2 @@ +connection.project.dir=.. +eclipse.preferences.version=1 diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/NotificationsActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/NotificationsActivity.java index 30045ae..1d33e83 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/NotificationsActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/NotificationsActivity.java @@ -6,11 +6,12 @@ import android.animation.ValueAnimator; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; -import android.support.annotation.NonNull; +import android.os.Handler; import android.util.Log; import com.mapbox.mapboxsdk.Mapbox; import com.mapbox.mapboxsdk.annotations.Marker; +import com.mapbox.mapboxsdk.annotations.MarkerOptions; import com.mapbox.mapboxsdk.annotations.MarkerViewOptions; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; @@ -21,39 +22,94 @@ import com.uam.wmi.findmytutor.model.Coordinate; import com.uam.wmi.findmytutor.network.RetrofitClientInstance; import com.uam.wmi.findmytutor.service.CoordinateService; -import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.annotations.NonNull; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.observers.DisposableSingleObserver; import io.reactivex.schedulers.Schedulers; -public class NotificationsActivity extends BaseActivity { +public class NotificationsActivity extends BaseActivity implements + OnMapReadyCallback { + + private int mInterval = 10000; + private Handler mHandler; private MapView mapView; + private MapboxMap mapboxMap; + private Map coordsMap = new HashMap<>(); + private CoordinateService coordinateService; private CompositeDisposable disposable = new CompositeDisposable(); - private List coordinatesList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + // This contains the MapView in XML and needs to be called after the access token is configured. + setContentView(R.layout.activity_notifications); + + + // mapInit(savedInstanceState); + + // Mapbox access token is configured here. This needs to be called either in your application + // object or in the same activity which contains the mapview. + Mapbox.getInstance(this, getString(R.string.access_token)); + + + + mapView = findViewById(R.id.mapView2); + mapView.onCreate(savedInstanceState); + mapView.getMapAsync(this); - mapInit(savedInstanceState); -// coordinateService = ApiClient.getClient(getApplicationContext()) -// .create(CoordinateService.class); final SharedPreferences sharedPref = getSharedPreferences("fmtPrefs", Context.MODE_PRIVATE); final String authToken = sharedPref.getString("authToken",null); coordinateService = RetrofitClientInstance.createService(CoordinateService.class,"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiI2YjhmNzFiMS00NDM2LTQxZGQtYjg3MC1mNzZlNjdkNDM4NDMiLCJzdWIiOiJzdHJpbmciLCJqdGkiOiJiZGRjZTAwMC0xN2U4LTQwNDUtYWZiNS1kY2RkOWNhNDFiNmQiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL3JvbGUiOiJUdXRvciIsImV4cCI6MTU0MTcxNzk2MywiaXNzIjoiaHR0cDovL2ZpbmRteXR1dG9yLmNvbSIsImF1ZCI6Imh0dHA6Ly9maW5kbXl0dXRvci5jb20ifQ.JJVNeMAwwla6DJk6X8qZUgPFKJp-Epx55W9V_fIwpgg"); - fetchTopCoords(); + mHandler = new Handler(); + +// fetchTopCoords(); } + @Override + public void onMapReady(MapboxMap map) { + mapboxMap = map; + final Marker marker = mapboxMap.addMarker(new MarkerViewOptions() + .position(new LatLng(52.466782,16.927549))); + mStatusChecker.run(); + + mapboxMap.addOnMapClickListener(new MapboxMap.OnMapClickListener() { + @Override + public void onMapClick(@NonNull LatLng point) { + + // When the user clicks on the map, we want to animate the marker to that + // location. + ValueAnimator markerAnimator = ObjectAnimator.ofObject(marker, "position", + new LatLngEvaluator(), marker.getPosition(), point); + markerAnimator.setDuration(2000); + markerAnimator.start(); + } + }); + } + + + Runnable mStatusChecker = new Runnable() { + @Override + public void run() { + try{ + fetchTopCoords(); + } finally { + mHandler.postDelayed(mStatusChecker, mInterval); + } + } + }; +/* private void mapInit(Bundle savedInstanceState) { // Mapbox access token is configured here. This needs to be called either in your application // object or in the same activity which contains the mapview. @@ -68,9 +124,9 @@ public class NotificationsActivity extends BaseActivity { public void onMapReady(MapboxMap mapboxMap) { final Marker marker = mapboxMap.addMarker(new MarkerViewOptions() - .position(new LatLng(64.900932, -18.167040))); + .position(new LatLng(52.466782,16.927549))); - mapboxMap.setOnMapClickListener(new MapboxMap.OnMapClickListener() { + mapboxMap.addOnMapClickListener(new MapboxMap.OnMapClickListener() { @Override public void onMapClick(@NonNull LatLng point) { @@ -86,10 +142,11 @@ public class NotificationsActivity extends BaseActivity { } }); - } + }*/ private void fetchTopCoords() { disposable.add( +// coordinateService.getTopCoordinates() coordinateService.getTopCoordinates() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -97,10 +154,33 @@ public class NotificationsActivity extends BaseActivity { @Override public void onSuccess(List coordsList) { - Log.d("mapTag", "co?"); - for (Coordinate element: - coordsList) { - Log.d("mapTag", element.getUserId()); + + for (Coordinate element : coordsList) { + String id = element.getUserId(); + Coordinate cord = coordsMap.get(id); + if (cord != null) { + if (!cord.getLongitude().equals(element.getLongitude()) + ) { + Log.d("mapper", " cos sie zienilo "); + Marker marker = mapboxMap.addMarker(new MarkerViewOptions() + .position(new LatLng(cord.getLatitude(),cord.getLongitude()))); + + ValueAnimator markerAnimator = ObjectAnimator.ofObject(marker, "position", + new LatLngEvaluator(), marker.getPosition(), new LatLng(element.getLatitude(),element.getLongitude())); + markerAnimator.setDuration(2000); + markerAnimator.start(); + + coordsMap.put(id,element); + } else if (!cord.getTimeStamp().equals(element.getTimeStamp())){ + Log.d("mapper", "update"); + Log.d("mapper", " "+cord.getTimeStamp()); + Log.d("mapper", " "+element.getTimeStamp()); + coordsMap.put(id,element); + } + } else { + coordsMap.put(id,element); + mapboxMap.addMarker(new MarkerOptions().position(new LatLng(element.getLatitude(), element.getLongitude()))); + } } } @@ -113,6 +193,7 @@ public class NotificationsActivity extends BaseActivity { } + @Override protected void onStart() { super.onStart(); @@ -147,6 +228,7 @@ public class NotificationsActivity extends BaseActivity { protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); + mHandler.removeCallbacks(mStatusChecker); disposable.dispose(); } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/StartupActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/StartupActivity.java index 04dfc8b..82f328f 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/StartupActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/StartupActivity.java @@ -14,7 +14,7 @@ public class StartupActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { if (PrefUtils.isLoggedIn(getApplicationContext())){ - Intent startupIntent = new Intent(this, MapActivity.class); + Intent startupIntent = new Intent(this, NotificationsActivity.class); startupIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(startupIntent); finish(); @@ -30,7 +30,7 @@ public class StartupActivity extends AppCompatActivity { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == AUTHENTICATION_REQUEST_CODE && resultCode == Activity.RESULT_OK) { - Intent startupIntent = new Intent(this, MapActivity.class); + Intent startupIntent = new Intent(this, NotificationsActivity.class); startupIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(startupIntent); } diff --git a/build.gradle b/build.gradle index 4e8009d..8d3ef8e 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.0' + classpath 'com.android.tools.build:gradle:3.2.1' // NOTE: Do not place your application dependencies here; they belong