Rebased from master

This commit is contained in:
Arty Bishop committed 2020-09-19 20:19:37 +01:00
1 parent e90322d828
commit 8c56c31b8c
12 files changed
+93 -132

No files matched your search

+23 -27
View File
@@ -62,35 +62,31 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "com.google.android.material:material:$material"
implementation "androidx.appcompat:appcompat:$appCompat"
implementation "androidx.legacy:legacy-support-v4:$supportLib"
implementation "androidx.constraintlayout:constraintlayout:$constraintLayout"
implementation "androidx.core:core-ktx:$ktx"
implementation "androidx.preference:preference:$preference"
implementation "androidx.navigation:navigation-fragment-ktx:$navigation"
implementation "androidx.navigation:navigation-runtime-ktx:$navigation"
implementation "androidx.navigation:navigation-ui-ktx:$navigation"
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle"
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle"
implementation "androidx.room:room-runtime:$room"
implementation "androidx.room:room-ktx:$room"
kapt "androidx.room:room-compiler:$room"
implementation "com.google.android.material:material:$material_version"
implementation "androidx.appcompat:appcompat:$app_compat_version"
implementation "androidx.legacy:legacy-support-v4:$support_lib_version"
implementation "androidx.constraintlayout:constraintlayout:$constraint_layout_version"
implementation "androidx.core:core-ktx:$ktx_version"
implementation "androidx.preference:preference:$preference_version"
implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version"
implementation "androidx.navigation:navigation-runtime-ktx:$navigation_version"
implementation "androidx.navigation:navigation-ui-ktx:$navigation_version"
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
implementation "androidx.room:room-runtime:$room_version"
implementation "androidx.room:room-ktx:$room_version"
kapt "androidx.room:room-compiler:$room_version"
implementation "com.google.dagger:dagger:$dagger"
kapt "com.google.dagger:dagger-compiler:$dagger"
implementation "com.google.dagger:dagger:$dagger_version"
kapt "com.google.dagger:dagger-compiler:$dagger_version"
implementation "com.squareup.retrofit2:retrofit:$retrofit"
implementation "com.squareup.retrofit2:converter-gson:$retrofit"
implementation "com.squareup.okhttp3:okhttp:$okhttp"
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
implementation "com.squareup.okhttp3:okhttp:$okhttp_version"
implementation "org.osmdroid:osmdroid-android:$openStreetMap"
implementation "org.osmdroid:osmdroid-mapsforge:$openStreetMap"
implementation "org.mapsforge:mapsforge-map-android:$mapsForge"
implementation "org.mapsforge:mapsforge-map:$mapsForge"
implementation "org.mapsforge:mapsforge-themes:$mapsForge"
implementation "org.osmdroid:osmdroid-android:$openStreetMap_version"
implementation "com.github.davidmoten:predict4java:$predict4java"
implementation "com.github.davidmoten:predict4java:$predict4java_version"
}
@@ -47,7 +47,7 @@ import com.rtbishop.look4sat.data.TleSource
import com.rtbishop.look4sat.databinding.ActivityMainBinding
import com.rtbishop.look4sat.databinding.DrawerHeaderBinding
import com.rtbishop.look4sat.ui.fragments.TleSourcesDialogFragment
import com.rtbishop.look4sat.utility.GeneralUtils.toast
import com.rtbishop.look4sat.utility.Extensions.toast
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import javax.inject.Inject
@@ -36,11 +36,11 @@ import com.rtbishop.look4sat.databinding.FragmentMapViewBinding
import com.rtbishop.look4sat.ui.MainActivity
import com.rtbishop.look4sat.ui.SharedViewModel
import com.rtbishop.look4sat.ui.views.MapView
import com.rtbishop.look4sat.utility.GeneralUtils
import com.rtbishop.look4sat.utility.GeneralUtils.toast
import com.rtbishop.look4sat.utility.Extensions.toast
import com.rtbishop.look4sat.utility.PassPredictor
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import java.util.*
import javax.inject.Inject
class MapViewFragment : Fragment(R.layout.fragment_map_view) {
@@ -60,7 +60,7 @@ class MapViewFragment : Fragment(R.layout.fragment_map_view) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding = FragmentMapViewBinding.bind(view)
mainActivity = activity as MainActivity
mainActivity = requireActivity() as MainActivity
(mainActivity.application as Look4SatApp).appComponent.inject(this)
viewModel = ViewModelProvider(mainActivity, modelFactory).get(SharedViewModel::class.java)
setupObservers(binding)
@@ -106,7 +106,7 @@ class MapViewFragment : Fragment(R.layout.fragment_map_view) {
lifecycleScope.launch {
while (true) {
mapView.invalidate()
setTextViewsToSelectedSatPos()
setDataToTextViews()
delay(viewModel.getRefreshRate())
}
}
@@ -133,12 +133,12 @@ class MapViewFragment : Fragment(R.layout.fragment_map_view) {
.show()
}
private fun setTextViewsToSelectedSatPos() {
val currentTime = GeneralUtils.getDateFor(System.currentTimeMillis())
private fun setDataToTextViews() {
val currentTime = Date(System.currentTimeMillis())
val orbitalPeriod = (24 * 60 / selectedSat.meanmo).toInt()
val positions = predictor.getPositions(currentTime, 60, 0, orbitalPeriod * 3)
var lon = GeneralUtils.rad2Deg(positions[0].longitude).toFloat()
val lat = GeneralUtils.rad2Deg(positions[0].latitude).toFloat()
var lon = Math.toDegrees(positions[0].longitude).toFloat()
val lat = Math.toDegrees(positions[0].latitude).toFloat()
val rng = positions[0].range
if (lon > 180f) lon -= 360f
@@ -42,7 +42,6 @@ import com.rtbishop.look4sat.ui.MainActivity
import com.rtbishop.look4sat.ui.SharedViewModel
import com.rtbishop.look4sat.ui.adapters.TransmitterAdapter
import com.rtbishop.look4sat.ui.views.PolarView
import com.rtbishop.look4sat.utility.GeneralUtils
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@@ -172,8 +171,8 @@ class PolarViewFragment : Fragment(R.layout.fragment_polar_view), SensorEventLis
val polarEl = mainActivity.getString(R.string.pat_elevation)
val polarRng = mainActivity.getString(R.string.pat_distance)
val polarAlt = mainActivity.getString(R.string.pat_altitude)
binding.tvPolarAz.text = String.format(polarAz, GeneralUtils.rad2Deg(satPos.azimuth))
binding.tvPolarEl.text = String.format(polarEl, GeneralUtils.rad2Deg(satPos.elevation))
binding.tvPolarAz.text = String.format(polarAz, Math.toDegrees(satPos.azimuth))
binding.tvPolarEl.text = String.format(polarEl, Math.toDegrees(satPos.elevation))
binding.tvPolarRng.text = String.format(polarRng, satPos.range)
binding.tvPolarAlt.text = String.format(polarAlt, satPos.altitude)
}
@@ -28,7 +28,7 @@ import androidx.preference.PreferenceFragmentCompat
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.ui.MainActivity
import com.rtbishop.look4sat.ui.SharedViewModel
import com.rtbishop.look4sat.utility.GeneralUtils.toast
import com.rtbishop.look4sat.utility.Extensions.toast
class PreferencesFragment : PreferenceFragmentCompat(),
SharedPreferences.OnSharedPreferenceChangeListener {
@@ -1,5 +1,6 @@
package com.rtbishop.look4sat.ui.views
import android.annotation.SuppressLint
import android.content.Context
import android.graphics.*
import android.view.View
@@ -10,7 +11,6 @@ import com.github.amsacode.predict4java.SatPos
import com.github.amsacode.predict4java.TLE
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.data.SatPass
import com.rtbishop.look4sat.utility.GeneralUtils
import java.util.*
import kotlin.math.abs
@@ -71,12 +71,13 @@ class MapView(context: Context) : View(context) {
selectedSat = passList[checked].tle
}
@SuppressLint("DrawAllocation")
override fun onDraw(canvas: Canvas) {
degLon = width / 360f
degLat = height / 180f
canvas.translate(width / 2f, height / 2f)
drawHomeLoc(canvas)
val currentTime = GeneralUtils.getDateFor(System.currentTimeMillis())
val currentTime = Date(System.currentTimeMillis())
val orbitalPeriod = (24 * 60 / selectedSat.meanmo).toInt()
val predictor = passList[checked].predictor
val positions = predictor.getPositions(currentTime, 60, 0, orbitalPeriod * 3)
@@ -105,8 +106,8 @@ class MapView(context: Context) : View(context) {
var lastLon = 181f
list.withIndex().forEach { (index, satPos) ->
lon = GeneralUtils.rad2Deg(satPos.longitude).toFloat()
lat = GeneralUtils.rad2Deg(satPos.latitude).toFloat() * -1
lon = Math.toDegrees(satPos.longitude).toFloat()
lat = Math.toDegrees(satPos.latitude).toFloat() * -1
if (lon > 180f) lon -= 360f
@@ -154,8 +155,8 @@ class MapView(context: Context) : View(context) {
}
private fun drawName(canvas: Canvas, position: SatPos, name: String) {
var lon = GeneralUtils.rad2Deg(position.longitude).toFloat()
val lat = GeneralUtils.rad2Deg(position.latitude).toFloat() * -1
var lon = Math.toDegrees(position.longitude).toFloat()
val lat = Math.toDegrees(position.latitude).toFloat() * -1
if (lon > 180f) lon -= 360f
@@ -8,7 +8,9 @@ import android.view.View
import androidx.core.content.ContextCompat
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.data.SatPass
import com.rtbishop.look4sat.utility.GeneralUtils
import java.util.*
import kotlin.math.cos
import kotlin.math.sin
class PolarView(context: Context) : View(context) {
@@ -23,7 +25,7 @@ class PolarView(context: Context) : View(context) {
private val radius = polarWidth * 0.49f
private val txtSize = scale * 15
private val path: Path = Path()
var azimuth = 0f
private var azimuth = 0f
private val radarPaint = Paint().apply {
isAntiAlias = true
@@ -79,8 +81,8 @@ class PolarView(context: Context) : View(context) {
val endTime = satPass.pass.endTime
while (startTime.before(endTime)) {
val satPos = satPass.predictor.getSatPos(startTime)
val x = GeneralUtils.sph2CartX(satPos.azimuth, satPos.elevation, radius.toDouble())
val y = GeneralUtils.sph2CartY(satPos.azimuth, satPos.elevation, radius.toDouble())
val x = sph2CartX(satPos.azimuth, satPos.elevation, radius.toDouble())
val y = sph2CartY(satPos.azimuth, satPos.elevation, radius.toDouble())
if (startTime.compareTo(satPass.pass.startTime) == 0) {
path.moveTo(x, -y)
} else {
@@ -92,12 +94,24 @@ class PolarView(context: Context) : View(context) {
}
private fun drawSatellite(cvs: Canvas, satPass: SatPass) {
val date = GeneralUtils.getDateFor(System.currentTimeMillis())
val date = Date(System.currentTimeMillis())
val satPos = satPass.predictor.getSatPos(date)
if (satPos.elevation > 0) {
val x = GeneralUtils.sph2CartX(satPos.azimuth, satPos.elevation, radius.toDouble())
val y = GeneralUtils.sph2CartY(satPos.azimuth, satPos.elevation, radius.toDouble())
val x = sph2CartX(satPos.azimuth, satPos.elevation, radius.toDouble())
val y = sph2CartY(satPos.azimuth, satPos.elevation, radius.toDouble())
cvs.drawCircle(x, -y, txtSize / 3, satPaint)
}
}
private fun sph2CartX(azimuth: Double, elevation: Double, r: Double): Float {
val piDiv2 = Math.PI / 2.0
val radius = r * (piDiv2 - elevation) / piDiv2
return (radius * cos(piDiv2 - azimuth)).toFloat()
}
private fun sph2CartY(azimuth: Double, elevation: Double, r: Double): Float {
val piDiv2 = Math.PI / 2.0
val radius = r * (piDiv2 - elevation) / piDiv2
return (radius * sin(piDiv2 - azimuth)).toFloat()
}
}
@@ -0,0 +1,11 @@
package com.rtbishop.look4sat.utility
import android.content.Context
import android.widget.Toast
object Extensions {
fun String.toast(context: Context, duration: Int = Toast.LENGTH_SHORT): Toast {
return Toast.makeText(context, this, duration).apply { show() }
}
}
@@ -1,34 +0,0 @@
package com.rtbishop.look4sat.utility
import android.content.Context
import android.widget.Toast
import java.util.*
import kotlin.math.cos
import kotlin.math.sin
object GeneralUtils {
private const val piDiv2 = Math.PI / 2.0
fun getDateFor(value: Long): Date {
return Date(value)
}
fun rad2Deg(value: Double): Double {
return value * 180 / Math.PI
}
fun sph2CartX(azimuth: Double, elevation: Double, r: Double): Float {
val radius = r * (piDiv2 - elevation) / piDiv2
return (radius * cos(piDiv2 - azimuth)).toFloat()
}
fun sph2CartY(azimuth: Double, elevation: Double, r: Double): Float {
val radius = r * (piDiv2 - elevation) / piDiv2
return (radius * sin(piDiv2 - azimuth)).toFloat()
}
fun Any.toast(context: Context, duration: Int = Toast.LENGTH_SHORT): Toast {
return Toast.makeText(context, this.toString(), duration).apply { show() }
}
}
-18
View File
@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<rendertheme version="5">
<rule
e="way"
k="natural"
v="issea|sea">
<area fill="#242424" />
</rule>
<rule
e="way"
k="natural"
v="nosea">
<area fill="#606060" />
</rule>
</rendertheme>
Binary file not shown.