mirror of
https://github.com/rt-bishop/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Changes to RadarFragment's satellite data views
This commit is contained in:
1 parent
6189fb497e
commit
0c71c4db29
10 files changed
+99
-46
No files matched your search
@@ -164,7 +164,7 @@ class MapViewModel @Inject constructor(
|
||||
val osmPos = GeoPos(osmLat, osmLon)
|
||||
val qthLoc = QthConverter.positionToQth(osmPos.latitude, osmPos.longitude) ?: "-- --"
|
||||
val satData = MapData(
|
||||
satellite, satellite.data.catnum, satellite.data.name, satPos.range,
|
||||
satellite, satellite.data.catnum, satellite.data.name, satPos.distance,
|
||||
satPos.altitude, satPos.getOrbitalVelocity(), qthLoc, osmPos
|
||||
)
|
||||
_satData.postValue(satData)
|
||||
|
||||
@@ -66,7 +66,6 @@ class PassesViewModel @Inject constructor(
|
||||
viewModelScope.launch {
|
||||
_passes.postValue(DataState.Loading)
|
||||
passesProcessing?.cancelAndJoin()
|
||||
delay(3000)
|
||||
selection?.let { items -> repository.setEntriesSelection(items) }
|
||||
settings.setHoursAhead(hoursAhead)
|
||||
settings.setMinElevation(minElevation)
|
||||
|
||||
@@ -102,14 +102,14 @@ class RadarFragment : Fragment(R.layout.fragment_radar) {
|
||||
|
||||
private fun setPassText(satPass: SatPass, satPos: SatPos) {
|
||||
val timeNow = System.currentTimeMillis()
|
||||
val polarAz = getString(R.string.pat_azimuth)
|
||||
val polarEl = getString(R.string.pat_elevation)
|
||||
val polarRng = getString(R.string.pat_distance)
|
||||
val polarAlt = getString(R.string.pat_altitude)
|
||||
binding.radarAz.text = String.format(polarAz, Math.toDegrees(satPos.azimuth))
|
||||
binding.radarEl.text = String.format(polarEl, Math.toDegrees(satPos.elevation))
|
||||
binding.radarDst.text = String.format(polarRng, satPos.range)
|
||||
binding.radarAlt.text = String.format(polarAlt, satPos.altitude)
|
||||
val radarAzim = getString(R.string.radar_az_value)
|
||||
val radarElev = getString(R.string.radar_el_value)
|
||||
val radarAlt = getString(R.string.radar_alt_value)
|
||||
val radarDist = getString(R.string.radar_dist_value)
|
||||
binding.radarAzValue.text = String.format(radarAzim, Math.toDegrees(satPos.azimuth))
|
||||
binding.radarElValue.text = String.format(radarElev, Math.toDegrees(satPos.elevation))
|
||||
binding.radarAltValue.text = String.format(radarAlt, satPos.altitude)
|
||||
binding.radarDstValue.text = String.format(radarDist, satPos.distance)
|
||||
// binding.radarName.text = satPass.name
|
||||
|
||||
if (!satPass.isDeepSpace) {
|
||||
|
||||
@@ -31,8 +31,6 @@ class RadarView(context: Context) : View(context) {
|
||||
|
||||
private val defaultColor = ContextCompat.getColor(context, R.color.accent)
|
||||
private val scale = resources.displayMetrics.density
|
||||
private val radarWidth = resources.displayMetrics.widthPixels
|
||||
private val radarRadius = radarWidth * 0.48f
|
||||
private val piDiv2 = Math.PI / 2.0
|
||||
private val strokeSize = scale * 2f
|
||||
private var position: SatPos? = null
|
||||
@@ -125,12 +123,12 @@ class RadarView(context: Context) : View(context) {
|
||||
override fun onDraw(canvas: Canvas) {
|
||||
val radarWidth = width - paddingLeft - paddingRight
|
||||
val radarHeight = height - paddingTop - paddingBottom
|
||||
val radarRadius = min(width, height) * 0.49f
|
||||
val radarRadius = min(width, height) * 0.48f
|
||||
val cx = paddingLeft + radarWidth / 2f
|
||||
val cy = paddingTop + radarHeight / 2f
|
||||
|
||||
if (positions.isNotEmpty() && !isTrackCreated) {
|
||||
createPassTrajectory()
|
||||
createPassTrajectory(radarRadius)
|
||||
createPassTrajectoryArrow()
|
||||
isTrackCreated = true
|
||||
}
|
||||
@@ -146,10 +144,10 @@ class RadarView(context: Context) : View(context) {
|
||||
canvas.drawPath(trackPath, arrowPaint)
|
||||
}
|
||||
if (shouldShowBeacons) {
|
||||
drawSatellite(canvas)
|
||||
drawSatellite(canvas, radarRadius)
|
||||
}
|
||||
if (shouldShowAim) {
|
||||
drawCrosshair(canvas, azimuth, pitch)
|
||||
drawCrosshair(canvas, azimuth, pitch, radarRadius)
|
||||
}
|
||||
if (shouldShowSweep) {
|
||||
canvas.translate(-cx, -cy)
|
||||
@@ -177,7 +175,7 @@ class RadarView(context: Context) : View(context) {
|
||||
}
|
||||
}
|
||||
|
||||
private fun drawSatellite(canvas: Canvas) {
|
||||
private fun drawSatellite(canvas: Canvas, radarRadius: Float) {
|
||||
position?.let { satPos ->
|
||||
if (satPos.elevation > 0) {
|
||||
val satX = sph2CartX(satPos.azimuth, satPos.elevation, radarRadius.toDouble())
|
||||
@@ -187,7 +185,7 @@ class RadarView(context: Context) : View(context) {
|
||||
}
|
||||
}
|
||||
|
||||
private fun drawCrosshair(canvas: Canvas, azimuth: Float, pitch: Float) {
|
||||
private fun drawCrosshair(canvas: Canvas, azimuth: Float, pitch: Float, radarRadius: Float) {
|
||||
val azimuthRad = Math.toRadians(azimuth.toDouble())
|
||||
val tmpElevation = Math.toRadians(pitch.toDouble())
|
||||
val elevationRad = if (tmpElevation > 0.0) 0.0 else tmpElevation
|
||||
@@ -208,7 +206,7 @@ class RadarView(context: Context) : View(context) {
|
||||
return (radius * sin(piDiv2 - azimuth)).toFloat()
|
||||
}
|
||||
|
||||
private fun createPassTrajectory() {
|
||||
private fun createPassTrajectory(radarRadius: Float) {
|
||||
positions.forEachIndexed { index, satPos ->
|
||||
val passX = sph2CartX(satPos.azimuth, satPos.elevation, radarRadius.toDouble())
|
||||
val passY = sph2CartY(satPos.azimuth, satPos.elevation, radarRadius.toDouble())
|
||||
|
||||
@@ -45,49 +45,81 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/radar_toolbar" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/radar_az_value"
|
||||
style="@style/RadarValue"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="4dp"
|
||||
android:text="@string/radar_az_value"
|
||||
app:layout_constraintStart_toStartOf="@+id/radar_card"
|
||||
app:layout_constraintTop_toTopOf="@+id/radar_card" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/radar_az"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_marginTop="4dp"
|
||||
android:text="@string/pat_azimuth"
|
||||
android:text="@string/radar_az_text"
|
||||
android:textSize="@dimen/text_size_small"
|
||||
app:layout_constraintStart_toStartOf="@+id/radar_card"
|
||||
app:layout_constraintTop_toTopOf="@+id/radar_card" />
|
||||
app:layout_constraintStart_toStartOf="@+id/radar_az_value"
|
||||
app:layout_constraintTop_toBottomOf="@+id/radar_az_value" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/radar_el_value"
|
||||
style="@style/RadarValue"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:text="@string/radar_el_value"
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/radar_az_value"
|
||||
app:layout_constraintEnd_toEndOf="@+id/radar_card" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/radar_el"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dp"
|
||||
android:layout_marginEnd="4dp"
|
||||
android:text="@string/pat_elevation"
|
||||
android:text="@string/radar_el_text"
|
||||
android:textSize="@dimen/text_size_small"
|
||||
app:layout_constraintEnd_toEndOf="@+id/radar_card"
|
||||
app:layout_constraintTop_toTopOf="@+id/radar_card" />
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/radar_az"
|
||||
app:layout_constraintEnd_toEndOf="@+id/radar_el_value" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/radar_alt_value"
|
||||
style="@style/RadarValue"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:text="@string/radar_alt_value"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/radar_card"
|
||||
app:layout_constraintStart_toStartOf="@+id/radar_az_value" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/radar_alt"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:text="@string/pat_altitude"
|
||||
android:text="@string/radar_alt_text"
|
||||
android:textSize="@dimen/text_size_small"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/radar_card"
|
||||
app:layout_constraintStart_toStartOf="@+id/radar_card" />
|
||||
app:layout_constraintBottom_toTopOf="@+id/radar_alt_value"
|
||||
app:layout_constraintStart_toStartOf="@+id/radar_alt_value" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/radar_dst_value"
|
||||
style="@style/RadarValue"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/radar_dist_value"
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/radar_alt_value"
|
||||
app:layout_constraintEnd_toEndOf="@+id/radar_el_value" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/radar_dst"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="4dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:text="@string/pat_distance"
|
||||
android:text="@string/radar_dist_text"
|
||||
android:textSize="@dimen/text_size_small"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/radar_card"
|
||||
app:layout_constraintEnd_toEndOf="@+id/radar_card" />
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/radar_alt"
|
||||
app:layout_constraintEnd_toEndOf="@+id/radar_dst_value" />
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/radar_list_card"
|
||||
|
||||
@@ -64,6 +64,15 @@
|
||||
<string name="map_qth">QTH Локатор: %s</string>
|
||||
<string name="map_coverage">Покрытие: %.0fкм</string>
|
||||
|
||||
<string name="radar_az_text">Азим.</string>
|
||||
<string name="radar_az_value">%.1f°</string>
|
||||
<string name="radar_el_text">Элев.</string>
|
||||
<string name="radar_el_value">%.1f°</string>
|
||||
<string name="radar_alt_text">Выс.</string>
|
||||
<string name="radar_alt_value">%.0f km</string>
|
||||
<string name="radar_dist_text">Дальн.</string>
|
||||
<string name="radar_dist_value">%.0f km</string>
|
||||
|
||||
<string name="pat_azimuth">Азимут: %.1f°</string>
|
||||
<string name="pat_elevation">Элевация: %.1f°</string>
|
||||
<string name="pat_distance">Дистанция: %.0fкм</string>
|
||||
|
||||
@@ -76,6 +76,15 @@
|
||||
<string name="map_coverage">Coverage: %.0f km</string>
|
||||
<string name="map_copyright" translatable="false">Wikimedia maps | Map data © OpenStreetMap contributors</string>
|
||||
|
||||
<string name="radar_az_text">Azimuth</string>
|
||||
<string name="radar_az_value">%.1f°</string>
|
||||
<string name="radar_el_text">Elevation</string>
|
||||
<string name="radar_el_value">%.1f°</string>
|
||||
<string name="radar_alt_text">Altitude</string>
|
||||
<string name="radar_alt_value">%.0f km</string>
|
||||
<string name="radar_dist_text">Distance</string>
|
||||
<string name="radar_dist_value">%.0f km</string>
|
||||
|
||||
<string name="pat_azimuth">Azimuth: %.1f°</string>
|
||||
<string name="pat_elevation">Elevation: %.1f°</string>
|
||||
<string name="pat_distance">Range: %.0f km</string>
|
||||
|
||||
@@ -132,6 +132,12 @@
|
||||
<item name="fabCradleRoundedCornerRadius">@dimen/view_default_margin</item>
|
||||
</style>
|
||||
|
||||
<style name="RadarValue">
|
||||
<item name="android:textSize">@dimen/text_size_large</item>
|
||||
<item name="android:textColor">@color/textMain</item>
|
||||
<item name="android:includeFontPadding">false</item>
|
||||
</style>
|
||||
|
||||
<style name="WorldMapText">
|
||||
<item name="android:textSize">@dimen/text_size_medium</item>
|
||||
<item name="android:textColor">@color/textMain</item>
|
||||
|
||||
Reference in new issue
Block a user