package com.flacksta.chef.journeygpstracker import android.Manifest import android.content.Intent import android.content.pm.PackageManager import android.os.Bundle import android.util.Log import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import com.flacksta.chef.journeygpstracker.databinding.ActivityMainScreenBinding import com.google.android.gms.location.* class MainScreenActivity : AppCompatActivity() { private lateinit var binding: ActivityMainScreenBinding private var mPermApproved: Boolean = false private lateinit var mTrackingServiceIntent: Intent private lateinit var mTrackingService: TrackingService private val mTag: String = "MainScreenActivity" private lateinit var mFusedLocationClient: FusedLocationProviderClient //private val noteDatabase by lazy { GpsPosRoomDatabase.getDatabase(this) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainScreenBinding.inflate(layoutInflater) setContentView(binding.root) binding.bottomNavigationView.setOnItemSelectedListener { val fragment = when (it.itemId) { R.id.map -> { MapFragment() } R.id.settings -> { SettingsFragment() } else -> { HomeFragment() } } loadFragment(fragment) true } loadFragment(HomeFragment()) val locationPermissionRequest = registerForActivityResult( ActivityResultContracts.RequestMultiplePermissions() ) { permissions -> when { permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> { Log.i(mTag,"Fine permission granted") mPermApproved = true } permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> { Log.i(mTag,"Only Coarse permission granted") } else -> { Log.i(mTag,"No Permission granted") } } } if( ContextCompat.checkSelfPermission( this, Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED ) { locationPermissionRequest.launch(arrayOf( Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION)) } else { mPermApproved = true } mTrackingService = TrackingService() mTrackingServiceIntent = Intent(this, mTrackingService.javaClass) startForegroundService(mTrackingServiceIntent) } private fun loadFragment(fragment: Fragment) { supportFragmentManager .beginTransaction() .replace(R.id.main_frame_layout, fragment) .commit() } override fun onDestroy() { if (::mTrackingServiceIntent.isInitialized) { stopService(mTrackingServiceIntent) Log.i(mTag,"Stopping service") } Log.i(mTag,"onDestroy()") super.onDestroy() } }