MainScreenActivity.kt 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package com.flacksta.chef.journeygpstracker
  2. import android.Manifest
  3. import android.content.Intent
  4. import android.content.pm.PackageManager
  5. import android.os.Bundle
  6. import android.util.Log
  7. import androidx.activity.result.contract.ActivityResultContracts
  8. import androidx.appcompat.app.AppCompatActivity
  9. import androidx.core.content.ContextCompat
  10. import androidx.fragment.app.Fragment
  11. import com.flacksta.chef.journeygpstracker.databinding.ActivityMainScreenBinding
  12. import com.google.android.gms.location.*
  13. class MainScreenActivity : AppCompatActivity() {
  14. private lateinit var binding: ActivityMainScreenBinding
  15. private var mPermApproved: Boolean = false
  16. private lateinit var mTrackingServiceIntent: Intent
  17. private lateinit var mTrackingService: TrackingService
  18. private val mTag: String = "MainScreenActivity"
  19. private lateinit var mFusedLocationClient: FusedLocationProviderClient
  20. //private val noteDatabase by lazy { GpsPosRoomDatabase.getDatabase(this) }
  21. override fun onCreate(savedInstanceState: Bundle?) {
  22. super.onCreate(savedInstanceState)
  23. binding = ActivityMainScreenBinding.inflate(layoutInflater)
  24. setContentView(binding.root)
  25. binding.bottomNavigationView.setOnItemSelectedListener {
  26. val fragment = when (it.itemId) {
  27. R.id.map -> {
  28. MapFragment()
  29. }
  30. R.id.settings -> {
  31. SettingsFragment()
  32. }
  33. else -> {
  34. HomeFragment()
  35. }
  36. }
  37. loadFragment(fragment)
  38. true
  39. }
  40. loadFragment(HomeFragment())
  41. val locationPermissionRequest = registerForActivityResult(
  42. ActivityResultContracts.RequestMultiplePermissions()
  43. ) { permissions ->
  44. when {
  45. permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
  46. Log.i(mTag,"Fine permission granted")
  47. mPermApproved = true
  48. }
  49. permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
  50. Log.i(mTag,"Only Coarse permission granted")
  51. } else -> {
  52. Log.i(mTag,"No Permission granted")
  53. }
  54. }
  55. }
  56. if( ContextCompat.checkSelfPermission(
  57. this,
  58. Manifest.permission.ACCESS_FINE_LOCATION
  59. ) != PackageManager.PERMISSION_GRANTED ) {
  60. locationPermissionRequest.launch(arrayOf(
  61. Manifest.permission.ACCESS_FINE_LOCATION,
  62. Manifest.permission.ACCESS_COARSE_LOCATION))
  63. }
  64. else {
  65. mPermApproved = true
  66. }
  67. mTrackingService = TrackingService()
  68. mTrackingServiceIntent = Intent(this, mTrackingService.javaClass)
  69. startForegroundService(mTrackingServiceIntent)
  70. }
  71. private fun loadFragment(fragment: Fragment) {
  72. supportFragmentManager
  73. .beginTransaction()
  74. .replace(R.id.main_frame_layout, fragment)
  75. .commit()
  76. }
  77. override fun onDestroy() {
  78. if (::mTrackingServiceIntent.isInitialized) {
  79. stopService(mTrackingServiceIntent)
  80. Log.i(mTag,"Stopping service")
  81. }
  82. Log.i(mTag,"onDestroy()")
  83. super.onDestroy()
  84. }
  85. }