aboutsummaryrefslogtreecommitdiff
path: root/Client
diff options
context:
space:
mode:
Diffstat (limited to 'Client')
-rw-r--r--Client/BrzoDoLokacije/app/build.gradle1
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt128
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_browse.xml15
3 files changed, 139 insertions, 5 deletions
diff --git a/Client/BrzoDoLokacije/app/build.gradle b/Client/BrzoDoLokacije/app/build.gradle
index 63d28a8..db4ed1b 100644
--- a/Client/BrzoDoLokacije/app/build.gradle
+++ b/Client/BrzoDoLokacije/app/build.gradle
@@ -49,6 +49,7 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
implementation 'com.google.android.gms:play-services-maps:18.1.0'
+ implementation 'com.google.android.gms:play-services-location:21.0.1'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
testImplementation 'junit:junit:4.13.2'
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt
index 08d0fdd..8012583 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt
@@ -3,17 +3,18 @@ package com.example.brzodolokacije.Fragments
import android.Manifest
import android.content.Context
import android.content.pm.PackageManager
+import android.location.Location
+import android.location.LocationManager
import android.os.Build
import android.os.Bundle
+import android.os.Looper
import android.os.StrictMode
import android.os.StrictMode.ThreadPolicy
import android.preference.PreferenceManager
import android.util.DisplayMetrics
-import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.core.app.ActivityCompat
@@ -21,6 +22,7 @@ import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import com.example.brzodolokacije.R
import com.example.brzodolokacije.Services.GeocoderHelper
+import com.google.android.gms.location.*
import com.google.android.material.floatingactionbutton.FloatingActionButton
import org.osmdroid.config.Configuration
import org.osmdroid.tileprovider.tilesource.TileSourceFactory
@@ -41,8 +43,11 @@ class FragmentBrowse : Fragment(R.layout.fragment_browse) {
var mRotationGestureOverlay:RotationGestureOverlay?=null
var mScaleBarOverlay: ScaleBarOverlay?=null
var mCompassOverlay:CompassOverlay?=null
+ private lateinit var locationManager: LocationManager
private lateinit var searchButton:FloatingActionButton
+ private lateinit var gpsButton:FloatingActionButton
private lateinit var searchBar: EditText
+ var client: FusedLocationProviderClient? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -60,13 +65,16 @@ class FragmentBrowse : Fragment(R.layout.fragment_browse) {
map!!.setTileSource(TileSourceFactory.MAPNIK);
setUpMap()
searchButton=v.findViewById<View>(R.id.FragmentBrowseSearchButton) as FloatingActionButton
+ gpsButton=v.findViewById<View>(R.id.FragmentBrowseMyLocation) as FloatingActionButton
searchBar=v.findViewById<View>(R.id.FragmentBrowseSearchBar) as EditText
-
+ client=LocationServices.getFusedLocationProviderClient(requireActivity())
searchButton.setOnClickListener{
searchMap()
- }
-
+ }
+ gpsButton.setOnClickListener{
+ getLocation()
+ }
return v
}
@@ -156,6 +164,116 @@ class FragmentBrowse : Fragment(R.layout.fragment_browse) {
}
}
}
+ private fun getLocation() {
+ if (ContextCompat.checkSelfPermission(
+ requireActivity(),
+ Manifest.permission
+ .ACCESS_FINE_LOCATION)
+ == PackageManager
+ .PERMISSION_GRANTED
+ && ContextCompat.checkSelfPermission(
+ requireActivity(),
+ Manifest.permission
+ .ACCESS_COARSE_LOCATION)
+ == PackageManager
+ .PERMISSION_GRANTED) {
+ // When permission is granted
+ // Call method
+ getCurrentLocation()
+ }
+ else {
+ requestPermissions(
+ arrayOf(
+ Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.ACCESS_COARSE_LOCATION
+ ),
+ 111
+ )
+
+ }
+ }
+ override fun onRequestPermissionsResult(
+ requestCode: Int, permissions: Array<String?>,
+ grantResults: IntArray
+ ) {
+ super.onRequestPermissionsResult(
+ requestCode, permissions, grantResults
+ )
+ // Check condition
+ if (requestCode == 111 && grantResults.size > 0
+ && (grantResults[0] + grantResults[1]
+ == PackageManager.PERMISSION_GRANTED)
+ ) {
+ // When permission are granted
+ // Call method
+ getCurrentLocation()
+ } else {
+ // When permission are denied
+ // Display toast
+ Toast
+ .makeText(
+ activity,
+ "Permission denied",
+ Toast.LENGTH_SHORT
+ )
+ .show()
+ }
+ }
+ @Suppress("MissingPermission")
+ private fun getCurrentLocation(){
+ val locationManager = requireActivity()
+ .getSystemService(
+ Context.LOCATION_SERVICE
+ ) as LocationManager
+ checkLocPerm()
+ if (locationManager.isProviderEnabled(
+ LocationManager.GPS_PROVIDER)
+ || locationManager.isProviderEnabled(
+ LocationManager.NETWORK_PROVIDER)){
+
+ client!!.getLastLocation().addOnCompleteListener {task ->
+ var location = task.result
+ if(location == null) {
+ val locationRequest: LocationRequest = LocationRequest()
+ .setPriority(
+ LocationRequest.PRIORITY_HIGH_ACCURACY
+ )
+ .setInterval(10000)
+ .setFastestInterval(
+ 1000
+ )
+ .setNumUpdates(1)
+
+ val locationCallback: LocationCallback = object : LocationCallback() {
+ override fun onLocationResult(
+ locationResult: LocationResult
+ ) {
+ // Initialize
+ // location
+ val location1: Location? = locationResult
+ .lastLocation
+ // Set latitude
+ map!!.controller.animateTo(GeoPoint(location1!!.latitude,location1!!.longitude))
+ Toast.makeText(requireContext()," "+location1!!.latitude,Toast.LENGTH_LONG)
+
+ }
+ }
+ client!!.requestLocationUpdates(
+ locationRequest,
+ locationCallback,
+ Looper.myLooper());
+ } else {
+ map!!.controller.animateTo(GeoPoint(location!!.latitude,location!!.longitude))
+ Toast.makeText(requireContext()," "+location.latitude,Toast.LENGTH_LONG)
+ }
+
+
+
+ }
+ }
+
+
+}
} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_browse.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_browse.xml
index cdccaa6..5f20c5f 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_browse.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_browse.xml
@@ -45,5 +45,20 @@
app:rippleColor="#FFFFFF"
app:srcCompat="@android:drawable/ic_search_category_default" />
+ <com.google.android.material.floatingactionbutton.FloatingActionButton
+ android:id="@+id/FragmentBrowseMyLocation"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentStart="true"
+ android:backgroundTint="#FFFFFF"
+ android:layout_marginBottom="80dp"
+ android:clickable="true"
+ android:focusable="true"
+ android:tint="#FFFFFF"
+ app:layout_constraintBottom_toBottomOf="@+id/FragmentBrowseMapView"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:rippleColor="#FFFFFF"
+ app:srcCompat="@android:drawable/ic_menu_mylocation" />
+
</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file