From 7dec6f40148141222799b243bccb64d0bbd49dc2 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Wed, 18 Apr 2018 14:47:13 +0100 Subject: [PATCH] Map in dedicated Activity --- catch/src/main/AndroidManifest.xml | 11 +- .../activities/EditFish1FormActivity.java | 4 + .../activities/EditFish1FormRowActivity.java | 4 + .../sifids/activities/Fish1FormsActivity.java | 67 ++--------- .../masts/sifids/activities/MapActivity.java | 110 ++++++++++++++++++ .../sifids/activities/SettingsActivity.java | 4 + .../main/res/layout/activity_fish_1_forms.xml | 10 +- catch/src/main/res/layout/activity_map.xml | 35 ++++++ catch/src/main/res/menu/main_menu.xml | 2 + catch/src/main/res/values/strings.xml | 1 + 10 files changed, 177 insertions(+), 71 deletions(-) create mode 100644 catch/src/main/java/uk/ac/masts/sifids/activities/MapActivity.java create mode 100644 catch/src/main/res/layout/activity_map.xml diff --git a/catch/src/main/AndroidManifest.xml b/catch/src/main/AndroidManifest.xml index f138301..2f4545d 100644 --- a/catch/src/main/AndroidManifest.xml +++ b/catch/src/main/AndroidManifest.xml @@ -27,7 +27,6 @@ android:theme="@style/AppTheme.NoActionBar"> - @@ -48,6 +47,14 @@ android:name="android.support.PARENT_ACTIVITY" android:value=".activities.EditFish1FormActivity" /> + + + - + diff --git a/catch/src/main/java/uk/ac/masts/sifids/activities/EditFish1FormActivity.java b/catch/src/main/java/uk/ac/masts/sifids/activities/EditFish1FormActivity.java index cb22848..85170d0 100644 --- a/catch/src/main/java/uk/ac/masts/sifids/activities/EditFish1FormActivity.java +++ b/catch/src/main/java/uk/ac/masts/sifids/activities/EditFish1FormActivity.java @@ -386,6 +386,10 @@ public boolean onOptionsItemSelected(MenuItem item) { intent = new Intent(this, Fish1FormsActivity.class); startActivity(intent); return true; + case R.id.activity_map: + intent = new Intent(this, MapActivity.class); + startActivity(intent); + return true; default: return super.onOptionsItemSelected(item); } diff --git a/catch/src/main/java/uk/ac/masts/sifids/activities/EditFish1FormRowActivity.java b/catch/src/main/java/uk/ac/masts/sifids/activities/EditFish1FormRowActivity.java index 9b1a2d6..25e94eb 100644 --- a/catch/src/main/java/uk/ac/masts/sifids/activities/EditFish1FormRowActivity.java +++ b/catch/src/main/java/uk/ac/masts/sifids/activities/EditFish1FormRowActivity.java @@ -469,6 +469,10 @@ public boolean onOptionsItemSelected(MenuItem item) { intent = new Intent(this, Fish1FormsActivity.class); startActivity(intent); return true; + case R.id.activity_map: + intent = new Intent(this, MapActivity.class); + startActivity(intent); + return true; default: return super.onOptionsItemSelected(item); } diff --git a/catch/src/main/java/uk/ac/masts/sifids/activities/Fish1FormsActivity.java b/catch/src/main/java/uk/ac/masts/sifids/activities/Fish1FormsActivity.java index 7ed6d25..85740a1 100644 --- a/catch/src/main/java/uk/ac/masts/sifids/activities/Fish1FormsActivity.java +++ b/catch/src/main/java/uk/ac/masts/sifids/activities/Fish1FormsActivity.java @@ -1,44 +1,26 @@ package uk.ac.masts.sifids.activities; import android.content.Intent; -import android.content.pm.PackageManager; -import android.location.Location; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.design.widget.FloatingActionButton; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; -import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; -import android.widget.Toast; - -import com.google.android.gms.location.FusedLocationProviderClient; -import com.google.android.gms.location.LocationServices; -import com.google.android.gms.maps.CameraUpdateFactory; -import com.google.android.gms.maps.GoogleMap; -import com.google.android.gms.maps.MapFragment; -import com.google.android.gms.maps.OnMapReadyCallback; -import com.google.android.gms.maps.model.LatLng; -import com.google.android.gms.maps.model.MarkerOptions; -import com.google.android.gms.tasks.OnSuccessListener; - -import java.util.ArrayList; + import java.util.List; import uk.ac.masts.sifids.R; import uk.ac.masts.sifids.database.CatchDatabase; -import uk.ac.masts.sifids.entities.CatchLocation; import uk.ac.masts.sifids.entities.Fish1Form; import uk.ac.masts.sifids.services.CatchLocationService; -public class Fish1FormsActivity extends AppCompatActivity implements OnMapReadyCallback { +public class Fish1FormsActivity extends AppCompatActivity { FloatingActionButton fab; public static RecyclerView recyclerView; @@ -57,7 +39,7 @@ protected void onCreate(Bundle savedInstanceState) { PreferenceManager.setDefaultValues(this, R.xml.pref_fishery_office_details, false); - db = CatchDatabase.getInstance(getApplicationContext()); + db = CatchDatabase.getInstance(getApplicationContext()); Runnable r = new Runnable(){ @Override @@ -79,11 +61,6 @@ public void run() { Thread newThread= new Thread(r); newThread.start(); - MapFragment mapFragment = (MapFragment) getFragmentManager() - .findFragmentById(R.id.map); - mapFragment.getMapAsync(this); - - fab=(FloatingActionButton)findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @@ -116,6 +93,10 @@ public boolean onOptionsItemSelected(MenuItem item) { intent = new Intent(this, Fish1FormsActivity.class); startActivity(intent); return true; + case R.id.activity_map: + intent = new Intent(this, MapActivity.class); + startActivity(intent); + return true; default: return super.onOptionsItemSelected(item); } @@ -129,38 +110,4 @@ public void stopTrackingLocation(View v) { stopService(new Intent(this, CatchLocationService.class)); } - List points; - - @Override - public void onMapReady(GoogleMap map) { - - points = new ArrayList(); - - Runnable r = new Runnable(){ - @Override - public void run() { - points = db.catchDao().getLastLocations(100); - } - }; - - Thread newThread= new Thread(r); - newThread.start(); - try { - newThread.join(); - } - catch (InterruptedException ie) { - - } - - boolean first = true; - for (CatchLocation point : points) { - Log.e("Map", "Got " + point.getCoordinates()); - map.addMarker(new MarkerOptions().position(point.getLatLng()).title(point.getCoordinates())); - if (first) { - map.moveCamera(CameraUpdateFactory.newLatLngZoom(point.getLatLng(), (float) 10.0)); - first = false; - } - } - } - } diff --git a/catch/src/main/java/uk/ac/masts/sifids/activities/MapActivity.java b/catch/src/main/java/uk/ac/masts/sifids/activities/MapActivity.java new file mode 100644 index 0000000..870d922 --- /dev/null +++ b/catch/src/main/java/uk/ac/masts/sifids/activities/MapActivity.java @@ -0,0 +1,110 @@ +package uk.ac.masts.sifids.activities; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; + +import com.google.android.gms.maps.CameraUpdateFactory; +import com.google.android.gms.maps.GoogleMap; +import com.google.android.gms.maps.MapFragment; +import com.google.android.gms.maps.OnMapReadyCallback; +import com.google.android.gms.maps.model.MarkerOptions; + +import java.util.ArrayList; +import java.util.List; + +import uk.ac.masts.sifids.R; +import uk.ac.masts.sifids.database.CatchDatabase; +import uk.ac.masts.sifids.entities.CatchLocation; + +public class MapActivity extends AppCompatActivity implements OnMapReadyCallback { + + CatchDatabase db; + List points; + + @Override + protected void onCreate(Bundle savedInstanceState) { + + super.onCreate(savedInstanceState); + + setContentView(R.layout.activity_map); +// Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); +// setSupportActionBar(toolbar); + + db = CatchDatabase.getInstance(getApplicationContext()); + + MapFragment mapFragment = (MapFragment) getFragmentManager() + .findFragmentById(R.id.map); + mapFragment.getMapAsync(this); + + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.main_menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle item selection + Intent intent; + switch (item.getItemId()) { + case R.id.settings: + intent = new Intent(this, SettingsActivity.class); + startActivity(intent); + return true; + case R.id.activity_catch: + intent = new Intent(this, Fish1FormsActivity.class); + startActivity(intent); + return true; + case R.id.activity_map: + intent = new Intent(this, MapActivity.class); + startActivity(intent); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + @Override + public void onMapReady(GoogleMap map) { + + points = new ArrayList(); + + Runnable r = new Runnable(){ + @Override + public void run() { + points = db.catchDao().getLastLocations(100); + } + }; + + Thread newThread= new Thread(r); + newThread.start(); + try { + newThread.join(); + } + catch (InterruptedException ie) { + + } + + map.setMapType(GoogleMap.MAP_TYPE_TERRAIN); + + boolean first = true; + for (CatchLocation point : points) { + Log.e("Map", "Got " + point.getCoordinates()); + map.addMarker(new MarkerOptions().position(point.getLatLng()).title(point.getCoordinates())); + if (first) { + map.moveCamera(CameraUpdateFactory.newLatLngZoom(point.getLatLng(), (float) 10.0)); + first = false; + } + } + } + +} diff --git a/catch/src/main/java/uk/ac/masts/sifids/activities/SettingsActivity.java b/catch/src/main/java/uk/ac/masts/sifids/activities/SettingsActivity.java index c1cf54e..4f5ed7b 100644 --- a/catch/src/main/java/uk/ac/masts/sifids/activities/SettingsActivity.java +++ b/catch/src/main/java/uk/ac/masts/sifids/activities/SettingsActivity.java @@ -321,6 +321,10 @@ public boolean onOptionsItemSelected(MenuItem item) { intent = new Intent(this, Fish1FormsActivity.class); startActivity(intent); return true; + case R.id.activity_map: + intent = new Intent(this, MapActivity.class); + startActivity(intent); + return true; default: return super.onOptionsItemSelected(item); } diff --git a/catch/src/main/res/layout/activity_fish_1_forms.xml b/catch/src/main/res/layout/activity_fish_1_forms.xml index 3774ed5..d2a62f2 100644 --- a/catch/src/main/res/layout/activity_fish_1_forms.xml +++ b/catch/src/main/res/layout/activity_fish_1_forms.xml @@ -42,17 +42,9 @@ tools:context="uk.ac.masts.sifids.activities.Fish1FormsActivity"> android:text="Stop Tracking Location" android:onClick="stopTrackingLocation" /> - - - diff --git a/catch/src/main/res/layout/activity_map.xml b/catch/src/main/res/layout/activity_map.xml new file mode 100644 index 0000000..31ea356 --- /dev/null +++ b/catch/src/main/res/layout/activity_map.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/catch/src/main/res/menu/main_menu.xml b/catch/src/main/res/menu/main_menu.xml index 856c65e..906a226 100644 --- a/catch/src/main/res/menu/main_menu.xml +++ b/catch/src/main/res/menu/main_menu.xml @@ -2,6 +2,8 @@ + \ No newline at end of file diff --git a/catch/src/main/res/values/strings.xml b/catch/src/main/res/values/strings.xml index 6bf46a8..2b87779 100644 --- a/catch/src/main/res/values/strings.xml +++ b/catch/src/main/res/values/strings.xml @@ -1,6 +1,7 @@ sifids Settings + Map