mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
v1.3.4 - Swapped ExecutorService for kotlin coroutines to refresh the views
This commit is contained in:
1 parent
e52e6ec4b5
commit
0188248bc1
6 files changed
+33
-26
No files matched your search
+2
-2
@@ -30,8 +30,8 @@ android {
|
||||
applicationId "com.rtbishop.look4sat"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 29
|
||||
versionCode 10
|
||||
versionName '1.3.3'
|
||||
versionCode 11
|
||||
versionName '1.3.4'
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
|
||||
@@ -63,6 +63,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
|
||||
setGroundStationPosition()
|
||||
}
|
||||
|
||||
var isFirstLaunch = true
|
||||
var tleMainList = dataManager.loadTleList()
|
||||
var tleSelection = dataManager.loadSelectionList()
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.github.amsacode.predict4java.GroundStationPosition
|
||||
import com.github.amsacode.predict4java.Position
|
||||
import com.github.amsacode.predict4java.SatPos
|
||||
@@ -37,9 +38,9 @@ import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.databinding.FragmentMapViewBinding
|
||||
import com.rtbishop.look4sat.predict4kotlin.PassPredictor
|
||||
import com.rtbishop.look4sat.repo.SatPass
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import java.util.*
|
||||
import java.util.concurrent.Executors
|
||||
import java.util.concurrent.TimeUnit
|
||||
import kotlin.math.abs
|
||||
|
||||
class MapViewFragment : Fragment(R.layout.fragment_map_view) {
|
||||
@@ -56,7 +57,6 @@ class MapViewFragment : Fragment(R.layout.fragment_map_view) {
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
val binding = FragmentMapViewBinding.bind(view)
|
||||
val service = Executors.newSingleThreadScheduledExecutor()
|
||||
mainActivity = activity as MainActivity
|
||||
viewModel = ViewModelProvider(mainActivity).get(MainViewModel::class.java)
|
||||
gsp = viewModel.getGSP().value ?: GroundStationPosition(0.0, 0.0, 0.0)
|
||||
@@ -70,12 +70,7 @@ class MapViewFragment : Fragment(R.layout.fragment_map_view) {
|
||||
predictor = satPassList.first().predictor
|
||||
mapView = MapView(mainActivity, binding)
|
||||
binding.frameMap.addView(mapView)
|
||||
service.scheduleAtFixedRate(
|
||||
{ mapView.invalidate() },
|
||||
viewModel.getRefreshRate(),
|
||||
viewModel.getRefreshRate(),
|
||||
TimeUnit.MILLISECONDS
|
||||
)
|
||||
refreshView()
|
||||
} else {
|
||||
binding.fabMap.setOnClickListener {
|
||||
Toast.makeText(
|
||||
@@ -87,6 +82,15 @@ class MapViewFragment : Fragment(R.layout.fragment_map_view) {
|
||||
}
|
||||
}
|
||||
|
||||
private fun refreshView() {
|
||||
lifecycleScope.launch {
|
||||
while (true) {
|
||||
mapView.invalidate()
|
||||
delay(viewModel.getRefreshRate())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun showSelectSatDialog(list: List<SatPass>) {
|
||||
val tleArray = arrayOfNulls<String>(list.size).apply {
|
||||
list.withIndex().forEach {
|
||||
|
||||
@@ -50,9 +50,8 @@ class PassListFragment : Fragment(R.layout.fragment_pass_list) {
|
||||
private lateinit var aosTimer: CountDownTimer
|
||||
private lateinit var aosTimerText: TextView
|
||||
private lateinit var mainActivity: MainActivity
|
||||
private lateinit var satPassList: MutableList<SatPass>
|
||||
private var satPassList: MutableList<SatPass> = mutableListOf()
|
||||
private var isTimerSet: Boolean = false
|
||||
private var isFirstLaunch: Boolean = true
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
@@ -60,14 +59,15 @@ class PassListFragment : Fragment(R.layout.fragment_pass_list) {
|
||||
mainActivity = activity as MainActivity
|
||||
viewModel = ViewModelProvider(mainActivity).get(MainViewModel::class.java)
|
||||
satPassAdapter = SatPassAdapter(viewModel)
|
||||
satPassList = mutableListOf()
|
||||
aosTimerText = mainActivity.findViewById(R.id.toolbar_timer)
|
||||
btnPassPrefs = mainActivity.findViewById(R.id.toolbar_filter)
|
||||
|
||||
setupComponents(fragmentBinding)
|
||||
setupObservers(fragmentBinding)
|
||||
if (viewModel.tleSelection.isNotEmpty() && isFirstLaunch) {
|
||||
|
||||
if (viewModel.tleSelection.isNotEmpty() && viewModel.isFirstLaunch) {
|
||||
viewModel.getPasses()
|
||||
isFirstLaunch = false
|
||||
viewModel.isFirstLaunch = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,16 +37,14 @@ import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.databinding.FragmentPolarViewBinding
|
||||
import com.rtbishop.look4sat.repo.SatPass
|
||||
import com.rtbishop.look4sat.ui.adapters.TransmitterAdapter
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import java.util.*
|
||||
import java.util.concurrent.Executors
|
||||
import java.util.concurrent.TimeUnit
|
||||
import kotlin.math.cos
|
||||
import kotlin.math.sin
|
||||
|
||||
class PolarViewFragment : Fragment(R.layout.fragment_polar_view) {
|
||||
|
||||
private val service = Executors.newSingleThreadScheduledExecutor()
|
||||
private val args: PolarViewFragmentArgs by navArgs()
|
||||
|
||||
private lateinit var viewModel: MainViewModel
|
||||
@@ -67,14 +65,18 @@ class PolarViewFragment : Fragment(R.layout.fragment_polar_view) {
|
||||
|
||||
polarView = PolarView(mainActivity, refreshRate, binding)
|
||||
binding.framePolar.addView(polarView)
|
||||
service.scheduleAtFixedRate(
|
||||
{ polarView.invalidate() },
|
||||
refreshRate,
|
||||
refreshRate,
|
||||
TimeUnit.MILLISECONDS
|
||||
)
|
||||
|
||||
setupTransRecycler(binding)
|
||||
refreshView()
|
||||
}
|
||||
}
|
||||
|
||||
private fun refreshView() {
|
||||
lifecycleScope.launch {
|
||||
while (true) {
|
||||
polarView.invalidate()
|
||||
delay(viewModel.getRefreshRate())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ buildscript {
|
||||
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.6.1'
|
||||
classpath 'com.android.tools.build:gradle:3.6.2'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.71"
|
||||
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.2.1"
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user