diff --git a/app/build.gradle b/app/build.gradle index be97688..1115b64 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -40,6 +40,7 @@ dependencies { implementation 'com.google.android.material:material:1.2.1' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'com.google.android.gms:play-services-maps:17.0.0' testImplementation 'junit:junit:4.13.1' // okhttp diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 465afef..f5def4b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,8 @@ + + diff --git a/app/src/main/java/com/a1/nextlocation/fragments/HomeFragment.java b/app/src/main/java/com/a1/nextlocation/fragments/HomeFragment.java index 7610b2a..34a6f07 100644 --- a/app/src/main/java/com/a1/nextlocation/fragments/HomeFragment.java +++ b/app/src/main/java/com/a1/nextlocation/fragments/HomeFragment.java @@ -1,20 +1,50 @@ package com.a1.nextlocation.fragments; +import android.Manifest; +import android.content.Context; +import android.content.pm.PackageManager; +import android.location.Location; +import android.location.LocationManager; import android.os.Bundle; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.a1.nextlocation.R; +import org.osmdroid.api.IMapController; +import org.osmdroid.config.Configuration; +import org.osmdroid.util.GeoPoint; +import org.osmdroid.views.MapView; +import org.osmdroid.views.overlay.compass.CompassOverlay; +import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider; +import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider; +import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay; + +import java.util.ArrayList; + public class HomeFragment extends Fragment { + private final String userAgent = "com.ai.nextlocation.fragments"; + private MapView mapView; + private final int REQUEST_PERMISSIONS_REQUEST_CODE = 1; + private final String TAG = HomeFragment.class.getCanonicalName(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + requestPermissionsIfNecessary( + // if you need to show the current location request FINE_LOCATION permission + Manifest.permission.ACCESS_FINE_LOCATION, + // WRITE_EXTERNAL_STORAGE is required in order to show the map + Manifest.permission.WRITE_EXTERNAL_STORAGE); } @@ -23,5 +53,80 @@ public class HomeFragment extends Fragment { Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_home, container, false); + + + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + initMap(view); + } + + private void initMap(@NonNull View view) { + // set the user agent + Configuration.getInstance().setUserAgentValue(userAgent); + + // create the map view + mapView = (MapView) view.findViewById(R.id.mapView); + mapView.setDestroyMode(false); + mapView.setTag("mapView"); + mapView.setMultiTouchControls(true); + + // get the location provider + GpsMyLocationProvider gpsMyLocationProvider = new GpsMyLocationProvider(this.requireContext()); + + // add the compass overlay + CompassOverlay compassOverlay = new CompassOverlay(requireContext(),new InternalCompassOrientationProvider(requireContext()),mapView); + compassOverlay.enableCompass(); + mapView.getOverlays().add(compassOverlay); + + // add the location overlay + MyLocationNewOverlay mLocationOverlay = new MyLocationNewOverlay(gpsMyLocationProvider, mapView); + mLocationOverlay.enableFollowLocation(); + mLocationOverlay.enableMyLocation(); + mapView.getOverlays().add(mLocationOverlay); + + // add the zoom controller + IMapController mapController = mapView.getController(); + mapController.setZoom(15.0); + + // add location manager and set the start point + LocationManager locationManager = (LocationManager) requireActivity().getSystemService(Context.LOCATION_SERVICE); + + try { + Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); + GeoPoint startPoint = new GeoPoint(location.getLatitude(), location.getLongitude()); + mapController.setCenter(startPoint); + + } catch (SecurityException e) { + Log.d(TAG, "onViewCreated: exception while getting location: " + e.getLocalizedMessage()); + + requestPermissionsIfNecessary( + // if you need to show the current location request FINE_LOCATION permission + Manifest.permission.ACCESS_FINE_LOCATION, + // WRITE_EXTERNAL_STORAGE is required in order to show the map + Manifest.permission.WRITE_EXTERNAL_STORAGE); + + } + + } + private void requestPermissionsIfNecessary(String... permissions) { + ArrayList permissionsToRequest = new ArrayList<>(); + if (this.getContext() != null) + for (String permission : permissions) { + if (ContextCompat.checkSelfPermission(this.getContext(), permission) + != PackageManager.PERMISSION_GRANTED) { + // Permission is not granted + permissionsToRequest.add(permission); + } + } + if (permissionsToRequest.size() > 0 && this.getActivity() != null) { + ActivityCompat.requestPermissions( + this.getActivity(), + permissionsToRequest.toArray(new String[0]), + REQUEST_PERMISSIONS_REQUEST_CODE); + } } } \ No newline at end of file diff --git a/app/src/main/java/com/a1/nextlocation/fragments/SettingsFragment.java b/app/src/main/java/com/a1/nextlocation/fragments/SettingsFragment.java index 92fa105..3d1a436 100644 --- a/app/src/main/java/com/a1/nextlocation/fragments/SettingsFragment.java +++ b/app/src/main/java/com/a1/nextlocation/fragments/SettingsFragment.java @@ -7,7 +7,10 @@ import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.Spinner; +import com.a1.nextlocation.MainActivity; import com.a1.nextlocation.R; public class SettingsFragment extends Fragment { @@ -15,13 +18,20 @@ public class SettingsFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment + View view = getView(); + Spinner dropdown = view.findViewById(R.id.dropdown_menu_Settings); + + String[] items = new String[]{"Nederlands", "Engels", "Chinees"}; + ArrayAdapter arrayAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_spinner_dropdown_item, items); + + dropdown.setAdapter(arrayAdapter); + return inflater.inflate(R.layout.fragment_settings, container, false); } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_back_button_24.xml b/app/src/main/res/drawable/ic_back_button_24.xml new file mode 100644 index 0000000..c056a2e --- /dev/null +++ b/app/src/main/res/drawable/ic_back_button_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_graphic_eq_24.xml b/app/src/main/res/drawable/ic_baseline_graphic_eq_24.xml new file mode 100644 index 0000000..42f814b --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_graphic_eq_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_info_24.xml b/app/src/main/res/drawable/ic_baseline_info_24.xml new file mode 100644 index 0000000..17255b7 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_info_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_location_on_24.xml b/app/src/main/res/drawable/ic_baseline_location_on_24.xml new file mode 100644 index 0000000..e6dfeb4 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_location_on_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_outlined_flag_24.xml b/app/src/main/res/drawable/ic_baseline_outlined_flag_24.xml new file mode 100644 index 0000000..85663ca --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_outlined_flag_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_settings_24.xml b/app/src/main/res/drawable/ic_baseline_settings_24.xml new file mode 100644 index 0000000..41a82ed --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_settings_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout-land/fragment_coupon.xml b/app/src/main/res/layout-land/fragment_coupon.xml new file mode 100644 index 0000000..23b3114 --- /dev/null +++ b/app/src/main/res/layout-land/fragment_coupon.xml @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +