mirror of
https://github.com/rt-bishop/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Added textViews to the WorldMap to display current satellite position and range
This commit is contained in:
1 parent
6dff3d5510
commit
96939794b5
7 files changed
+79
-10
No files matched your search
@@ -26,6 +26,7 @@ import android.view.LayoutInflater
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
|
import android.widget.TextView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
@@ -49,6 +50,9 @@ class MapViewFragment : Fragment() {
|
|||||||
private lateinit var mapFrame: FrameLayout
|
private lateinit var mapFrame: FrameLayout
|
||||||
private lateinit var mapFab: FloatingActionButton
|
private lateinit var mapFab: FloatingActionButton
|
||||||
private lateinit var mapView: MapView
|
private lateinit var mapView: MapView
|
||||||
|
private lateinit var mapLat: TextView
|
||||||
|
private lateinit var mapLon: TextView
|
||||||
|
private lateinit var mapRng: TextView
|
||||||
private lateinit var predictor: PassPredictor
|
private lateinit var predictor: PassPredictor
|
||||||
private lateinit var selectedSat: TLE
|
private lateinit var selectedSat: TLE
|
||||||
private lateinit var gsp: GroundStationPosition
|
private lateinit var gsp: GroundStationPosition
|
||||||
@@ -79,6 +83,9 @@ class MapViewFragment : Fragment() {
|
|||||||
private fun findViews(view: View) {
|
private fun findViews(view: View) {
|
||||||
mapFrame = view.findViewById(R.id.map_frame)
|
mapFrame = view.findViewById(R.id.map_frame)
|
||||||
mapFab = view.findViewById(R.id.map_fab)
|
mapFab = view.findViewById(R.id.map_fab)
|
||||||
|
mapLat = view.findViewById(R.id.map_lat)
|
||||||
|
mapLon = view.findViewById(R.id.map_lon)
|
||||||
|
mapRng = view.findViewById(R.id.map_rng)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupComponents() {
|
private fun setupComponents() {
|
||||||
@@ -170,6 +177,7 @@ class MapViewFragment : Fragment() {
|
|||||||
val currentTime = getDateFor(System.currentTimeMillis())
|
val currentTime = getDateFor(System.currentTimeMillis())
|
||||||
val orbitalPeriod = (24 * 60 / selectedSat.meanmo).toInt()
|
val orbitalPeriod = (24 * 60 / selectedSat.meanmo).toInt()
|
||||||
val positions = predictor.getPositions(currentTime, 60, 0, orbitalPeriod * 3)
|
val positions = predictor.getPositions(currentTime, 60, 0, orbitalPeriod * 3)
|
||||||
|
setTextViewsToSelectedSatPos(positions[0])
|
||||||
drawGroundTrack(canvas, degLon, degLat, positions)
|
drawGroundTrack(canvas, degLon, degLat, positions)
|
||||||
satPassList.forEach {
|
satPassList.forEach {
|
||||||
drawSat(canvas, degLon, degLat, it.tle, it.predictor, currentTime)
|
drawSat(canvas, degLon, degLat, it.tle, it.predictor, currentTime)
|
||||||
@@ -190,6 +198,18 @@ class MapViewFragment : Fragment() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setTextViewsToSelectedSatPos(position: SatPos) {
|
||||||
|
var lon = rad2Deg(position.longitude).toFloat()
|
||||||
|
val lat = rad2Deg(position.latitude).toFloat()
|
||||||
|
val rng = position.range
|
||||||
|
|
||||||
|
if (lon > 180f) lon -= 360f
|
||||||
|
|
||||||
|
mapLat.text = String.format(context.getString(R.string.pattern_value_lat), lat)
|
||||||
|
mapLon.text = String.format(context.getString(R.string.pattern_value_lon), lon)
|
||||||
|
mapRng.text = String.format(context.getString(R.string.pattern_value_rng), rng)
|
||||||
|
}
|
||||||
|
|
||||||
private fun drawGroundTrack(
|
private fun drawGroundTrack(
|
||||||
canvas: Canvas,
|
canvas: Canvas,
|
||||||
degLon: Float,
|
degLon: Float,
|
||||||
|
|||||||
@@ -170,17 +170,17 @@ class PolarViewFragment : Fragment() {
|
|||||||
private fun setPassText() {
|
private fun setPassText() {
|
||||||
satPos = satPass.predictor.getSatPos(Date())
|
satPos = satPass.predictor.getSatPos(Date())
|
||||||
polarAzimuth.text = String.format(
|
polarAzimuth.text = String.format(
|
||||||
context.getString(R.string.pattern_polar_azimuth),
|
context.getString(R.string.pattern_value_az),
|
||||||
rad2Deg(satPos.azimuth)
|
rad2Deg(satPos.azimuth)
|
||||||
)
|
)
|
||||||
polarElevation.text = String.format(
|
polarElevation.text = String.format(
|
||||||
context.getString(R.string.pattern_polar_elev),
|
context.getString(R.string.pattern_value_el),
|
||||||
rad2Deg(satPos.elevation)
|
rad2Deg(satPos.elevation)
|
||||||
)
|
)
|
||||||
polarRange.text =
|
polarRange.text =
|
||||||
String.format(context.getString(R.string.pattern_polar_range), satPos.range)
|
String.format(context.getString(R.string.pattern_value_rng), satPos.range)
|
||||||
polarAltitude.text =
|
polarAltitude.text =
|
||||||
String.format(context.getString(R.string.pattern_polar_alt), satPos.altitude)
|
String.format(context.getString(R.string.pattern_value_alt), satPos.altitude)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun drawRadarView(cvs: Canvas) {
|
private fun drawRadarView(cvs: Canvas) {
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle">
|
||||||
|
<solid android:color="@color/backgroundMapText" />
|
||||||
|
<corners android:radius="8dp" />
|
||||||
|
</shape>
|
||||||
@@ -21,9 +21,37 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="bottom|start"
|
android:layout_gravity="bottom|start"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="8dp"
|
||||||
android:layout_marginBottom="16dp"
|
android:layout_marginBottom="8dp"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:srcCompat="@drawable/ic_sat_asc_right" />
|
app:srcCompat="@drawable/ic_sat_asc_right" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/map_lat"
|
||||||
|
style="@style/MapText"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
android:layout_marginTop="4dp"
|
||||||
|
android:text="@string/pattern_value_lat"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/map_lon"
|
||||||
|
style="@style/MapText"
|
||||||
|
android:layout_marginTop="4dp"
|
||||||
|
android:layout_marginEnd="4dp"
|
||||||
|
android:text="@string/pattern_value_lon"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/map_rng"
|
||||||
|
style="@style/MapText"
|
||||||
|
android:layout_marginEnd="4dp"
|
||||||
|
android:layout_marginBottom="4dp"
|
||||||
|
android:text="@string/pattern_value_rng"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
<color name="themeLight">#C0C0C0</color>
|
<color name="themeLight">#C0C0C0</color>
|
||||||
<color name="themeDark">#191919</color>
|
<color name="themeDark">#191919</color>
|
||||||
<color name="backgroundDark">#080808</color>
|
<color name="backgroundDark">#080808</color>
|
||||||
|
<color name="backgroundMapText">#CC000000</color>
|
||||||
<color name="satTrack">#D50000</color>
|
<color name="satTrack">#D50000</color>
|
||||||
<color name="satFootprint">#FFE082</color>
|
<color name="satFootprint">#FFE082</color>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -99,10 +99,12 @@
|
|||||||
<string name="pattern_pass_maxEl">MaxEl: %.1f°</string>
|
<string name="pattern_pass_maxEl">MaxEl: %.1f°</string>
|
||||||
<string name="pattern_pass_azimuth">Az: %2d° -> %2d°</string>
|
<string name="pattern_pass_azimuth">Az: %2d° -> %2d°</string>
|
||||||
|
|
||||||
<string name="pattern_polar_azimuth">Azimuth: %.1f°</string>
|
<string name="pattern_value_az">Az: %.1f°</string>
|
||||||
<string name="pattern_polar_elev">Elevation: %.1f°</string>
|
<string name="pattern_value_el">El: %.1f°</string>
|
||||||
<string name="pattern_polar_range">Range: %.0f km</string>
|
<string name="pattern_value_lat">Lat: %.1f°</string>
|
||||||
<string name="pattern_polar_alt">Altitude: %.0f km</string>
|
<string name="pattern_value_lon">Lon: %.1f°</string>
|
||||||
|
<string name="pattern_value_rng">Rng: %.0f km</string>
|
||||||
|
<string name="pattern_value_alt">Alt: %.0f km</string>
|
||||||
|
|
||||||
<string name="pattern_trans_mode">Mode: %s</string>
|
<string name="pattern_trans_mode">Mode: %s</string>
|
||||||
<string name="pattern_trans_invert">Inverted: %s</string>
|
<string name="pattern_trans_invert">Inverted: %s</string>
|
||||||
|
|||||||
@@ -93,4 +93,16 @@
|
|||||||
<item name="android:textSize">15sp</item>
|
<item name="android:textSize">15sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="MapText">
|
||||||
|
<item name="android:layout_width">wrap_content</item>
|
||||||
|
<item name="android:layout_height">wrap_content</item>
|
||||||
|
<item name="android:textColor">@color/themeAccent</item>
|
||||||
|
<item name="android:background">@drawable/bg_round_borders</item>
|
||||||
|
<item name="android:textSize">15sp</item>
|
||||||
|
<item name="android:paddingStart">6dp</item>
|
||||||
|
<item name="android:paddingEnd">6dp</item>
|
||||||
|
<item name="android:paddingTop">2dp</item>
|
||||||
|
<item name="android:paddingBottom">2dp</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
Reference in new issue
Block a user