@@ -2,11 +2,16 @@ package com.istudio.distancetracker.features.map.presentation.view
22
33import android.annotation.SuppressLint
44import android.app.Dialog
5+ import android.content.ContentValues
56import android.content.Intent
67import android.content.res.Configuration
8+ import android.graphics.Bitmap
79import android.graphics.Color
810import android.graphics.drawable.ColorDrawable
11+ import android.os.Build
912import android.os.Bundle
13+ import android.os.Environment
14+ import android.provider.MediaStore
1015import android.provider.Settings
1116import android.view.Gravity
1217import android.view.LayoutInflater
@@ -15,6 +20,7 @@ import android.view.ViewGroup
1520import android.view.Window
1621import android.widget.LinearLayout
1722import androidx.activity.result.contract.ActivityResultContracts
23+ import androidx.annotation.RequiresApi
1824import androidx.appcompat.app.AppCompatDelegate
1925import androidx.fragment.app.Fragment
2026import androidx.fragment.app.viewModels
@@ -49,14 +55,18 @@ import com.istudio.distancetracker.features.map.domain.entities.outputs.Calculat
4955import com.istudio.distancetracker.features.map.events.EventMapStyleSelected
5056import com.istudio.distancetracker.features.map.presentation.state.MapStates
5157import com.istudio.distancetracker.features.map.presentation.vm.MapsVm
58+ import com.istudio.distancetracker.features.map.util.FileOperations
5259import com.istudio.distancetracker.features.map.util.MapUtil.setCameraPosition
5360import com.istudio.distancetracker.model.Result
5461import com.istudio.distancetracker.service.TrackerService
5562import com.istudio.feat_inappreview.dialog.ReviewDialog
5663import com.istudio.feat_inappreview.manager.InAppReviewManager
5764import dagger.hilt.android.AndroidEntryPoint
65+ import kotlinx.coroutines.Dispatchers
5866import kotlinx.coroutines.delay
5967import kotlinx.coroutines.launch
68+ import kotlinx.coroutines.withContext
69+ import java.io.File
6070import javax.inject.Inject
6171
6272
@@ -328,6 +338,7 @@ class MapFragment : Fragment(), GoogleMap.OnMyLocationButtonClickListener {
328338 resultPageNavigation(resultCalculated)
329339 // Display the reset state for map since the result is calculated and shown
330340 binding.mapMasterViewId.resetMapUiState()
341+ setMapSnapshot()
331342 }
332343 }
333344
@@ -514,12 +525,16 @@ class MapFragment : Fragment(), GoogleMap.OnMyLocationButtonClickListener {
514525 /* *
515526 * Getting a snapshot from the Map fragment
516527 */
517- fun setMapSnapshot () {
518- map.snapshot {
519- log.i(TAG ," Taking the snapshot for the map:-> $it " )
520- val mapImage = it? : return @snapshot
521-
522528
529+ fun setMapSnapshot () {
530+ map.snapshot { imgBitmap ->
531+ log.i(TAG ," Taking the snapshot for the map:-> $imgBitmap " )
532+ val mapImage = imgBitmap? : return @snapshot
533+ lifecycleScope.launchWhenStarted {
534+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .Q ) {
535+ FileOperations .saveImage(requireContext(),imgBitmap)
536+ }
537+ }
523538 }
524539 }
525540}
0 commit comments