Skip to content
Snippets Groups Projects
Commit b843fcf4 authored by DewanaGustavus's avatar DewanaGustavus
Browse files

refactor: location manager

parent 5c8e27f4
Branches
Tags
3 merge requests!13Release,!11proper save for gmail,!9Scan nota
package com.example.bondoyap.service
import android.content.Context
import android.content.pm.PackageManager
import android.location.Location
import androidx.core.app.ActivityCompat
import androidx.fragment.app.FragmentActivity
import com.google.android.gms.location.LocationServices
class LocationManager {
companion object {
fun askLocationPermission(context: Context, activity: FragmentActivity) {
if (
ActivityCompat.checkSelfPermission(
context,
android.Manifest.permission.ACCESS_FINE_LOCATION
)
!= PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(
context,
android.Manifest.permission.ACCESS_COARSE_LOCATION
)
!= PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
activity,
arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), 100
)
}
}
fun getLocation(context: Context): Location? {
var location: Location? = null
if (
ActivityCompat.checkSelfPermission(
context,
android.Manifest.permission.ACCESS_FINE_LOCATION
)
!= PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(
context,
android.Manifest.permission.ACCESS_COARSE_LOCATION
)
!= PackageManager.PERMISSION_GRANTED
) {
val fusedLocationProviderClient =
LocationServices.getFusedLocationProviderClient(context)
val locationProvider = fusedLocationProviderClient.lastLocation
locationProvider.addOnSuccessListener {
if (it != null) {
location = it
}
}
}
return location
}
}
}
\ No newline at end of file
package com.example.bondoyap.ui.transactions package com.example.bondoyap.ui.transactions
import android.R import android.R
import android.content.Context
import android.content.IntentFilter
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ArrayAdapter import android.widget.ArrayAdapter
import android.widget.Toast import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.core.app.ActivityCompat
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.example.bondoyap.databinding.FragmentAddTransactionsBinding import com.example.bondoyap.databinding.FragmentAddTransactionsBinding
import com.example.bondoyap.service.api.Constants.ACTION_RANDOMIZE_TRANSACTIONS import com.example.bondoyap.service.LocationManager
import com.example.bondoyap.ui.transactions.data.Transactions import com.example.bondoyap.ui.transactions.data.Transactions
import com.google.android.gms.location.FusedLocationProviderClient import com.google.android.gms.location.FusedLocationProviderClient
import com.google.android.gms.location.LocationServices import com.google.android.gms.location.LocationServices
...@@ -42,9 +35,9 @@ class AddTransactionsFragment : Fragment() { ...@@ -42,9 +35,9 @@ class AddTransactionsFragment : Fragment() {
private lateinit var longitude: String private lateinit var longitude: String
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, inflater: LayoutInflater,
container: ViewGroup?, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View { ): View {
_binding = FragmentAddTransactionsBinding.inflate(inflater, container, false) _binding = FragmentAddTransactionsBinding.inflate(inflater, container, false)
...@@ -57,18 +50,10 @@ class AddTransactionsFragment : Fragment() { ...@@ -57,18 +50,10 @@ class AddTransactionsFragment : Fragment() {
adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item) adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item)
binding.spinnerKategori.adapter = adapter binding.spinnerKategori.adapter = adapter
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(requireContext()) fusedLocationProviderClient =
LocationServices.getFusedLocationProviderClient(requireContext())
if ( LocationManager.askLocationPermission(requireContext(), requireActivity())
ActivityCompat.checkSelfPermission(requireContext(), android.Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(requireContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(requireActivity(),
arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), 100
)
}
binding.buttonSimpan.setOnClickListener { binding.buttonSimpan.setOnClickListener {
val isPemasukan: Boolean = when (binding.spinnerKategori.selectedItem.toString()) { val isPemasukan: Boolean = when (binding.spinnerKategori.selectedItem.toString()) {
...@@ -91,42 +76,27 @@ class AddTransactionsFragment : Fragment() { ...@@ -91,42 +76,27 @@ class AddTransactionsFragment : Fragment() {
0.0 0.0
} }
val location = fusedLocationProviderClient.lastLocation LocationManager.askLocationPermission(requireContext(), requireActivity())
location.addOnSuccessListener { val location = LocationManager.getLocation(requireContext())
if(it != null) { var longitude: String = ""
latitude = it.latitude.toString() var latitude: String = ""
longitude = it.longitude.toString() location?.let { it1 ->
longitude = it1.longitude.toString()
val transaction: Transactions = Transactions( latitude = it1.latitude.toString()
judul = judul,
nominal = nominal,
isPemasukan = isPemasukan,
tanggal = currentDate,
longitude = longitude,
latitude = latitude
)
transactionsViewModel.upsert(transaction)
}
} }
if( val transaction: Transactions = Transactions(
ActivityCompat.checkSelfPermission(requireContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) judul = judul,
!= PackageManager.PERMISSION_GRANTED nominal = nominal,
&& ActivityCompat.checkSelfPermission(requireContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION) isPemasukan = isPemasukan,
!= PackageManager.PERMISSION_GRANTED tanggal = currentDate,
) { longitude = longitude,
val transaction: Transactions = Transactions( latitude = latitude
judul = judul, )
nominal = nominal, transactionsViewModel.upsert(transaction)
isPemasukan = isPemasukan,
tanggal = currentDate,
longitude = "",
latitude = ""
)
transactionsViewModel.upsert(transaction)
}
Toast.makeText(requireContext(), "Transaksi berhasil disimpan", Toast.LENGTH_SHORT).show() Toast.makeText(requireContext(), "Transaksi berhasil disimpan", Toast.LENGTH_SHORT)
.show()
binding.editTextJudul.text.clear() binding.editTextJudul.text.clear()
binding.editTextNominal.text.clear() binding.editTextNominal.text.clear()
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment