From 6ead302634a683624612d98b57e8272adfe8e57d Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Mon, 3 Feb 2020 18:47:47 +0000 Subject: [PATCH] Added Api 21 support. Fixed the bug with geostationary satellites calculations. Showing them on top of the list in separate ViewHolders. --- app/build.gradle | 6 +- .../look4sat/predict4kotlin/PassPredictor.kt | 47 +++++++++-- .../com/rtbishop/look4sat/ui/MainActivity.kt | 10 --- .../rtbishop/look4sat/ui/MapViewFragment.kt | 7 +- .../rtbishop/look4sat/ui/PassListFragment.kt | 6 +- .../rtbishop/look4sat/ui/PolarViewFragment.kt | 11 +-- .../look4sat/ui/adapters/SatPassAdapter.kt | 57 +++++++++++-- .../res/drawable-nodpi/splash_foreground.webp | Bin 22684 -> 0 bytes .../main/res/drawable-nodpi/splash_front.webp | Bin 0 -> 16966 bytes app/src/main/res/drawable/splash_drawable.xml | 10 +-- app/src/main/res/layout/app_bar_main.xml | 2 +- app/src/main/res/layout/card_pass.xml | 15 +++- app/src/main/res/layout/card_pass_geo.xml | 79 ++++++++++++++++++ app/src/main/res/values-ru/strings.xml | 10 +-- app/src/main/res/values/strings.xml | 6 +- app/src/main/res/values/styles.xml | 2 +- 16 files changed, 209 insertions(+), 59 deletions(-) delete mode 100644 app/src/main/res/drawable-nodpi/splash_foreground.webp create mode 100644 app/src/main/res/drawable-nodpi/splash_front.webp create mode 100644 app/src/main/res/layout/card_pass_geo.xml diff --git a/app/build.gradle b/app/build.gradle index a9ee5bce..0aedbf82 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -28,10 +28,10 @@ android { buildToolsVersion "29.0.2" defaultConfig { applicationId "com.rtbishop.look4sat" - minSdkVersion 24 + minSdkVersion 21 targetSdkVersion 29 - versionCode 2 - versionName '1.1' + versionCode 3 + versionName '1.2' } buildTypes { release { diff --git a/app/src/main/java/com/rtbishop/look4sat/predict4kotlin/PassPredictor.kt b/app/src/main/java/com/rtbishop/look4sat/predict4kotlin/PassPredictor.kt index 3d107d3e..2a166cc7 100644 --- a/app/src/main/java/com/rtbishop/look4sat/predict4kotlin/PassPredictor.kt +++ b/app/src/main/java/com/rtbishop/look4sat/predict4kotlin/PassPredictor.kt @@ -103,18 +103,49 @@ class PassPredictor(private val tle: TLE, private val qth: GroundStationPosition var lastAOS: Date var count = 0 - do { - if (count > 0) windBackTime = false - val pass = nextSatPass(trackStartDate, windBackTime) - lastAOS = pass.startTime - passes.add(pass) - trackStartDate = Date(pass.endTime.time + threeQuarterOrbitMinutes() * 60L * 1000L) - count++ - } while (lastAOS < trackEndDate) + if (tle.isDeepspace) { + passes.add(nextGeoSatPass(start)) + } else { + do { + if (count > 0) windBackTime = false + val pass = nextSatPass(trackStartDate, windBackTime) + lastAOS = pass.startTime + passes.add(pass) + trackStartDate = Date(pass.endTime.time + threeQuarterOrbitMinutes() * 60L * 1000L) + count++ + } while (lastAOS < trackEndDate) + } return passes } + private fun nextGeoSatPass(date: Date): SatPassTime { + val aosAzimuth: Int + val losAzimuth: Int + val tca: Date + val polePassed: String + val cal = Calendar.getInstance(timeZone).apply { + clear() + timeInMillis = date.time + } + val satPos = getSatPos(cal.time) + + aosAzimuth = (satPos.azimuth / (2.0 * Math.PI) * 360.0).toInt() + losAzimuth = (satPos.azimuth / (2.0 * Math.PI) * 360.0).toInt() + tca = satPos.time + polePassed = getPolePassed(satPos, satPos) + + cal.add(Calendar.HOUR, -12) + val startDate = cal.time + cal.add(Calendar.HOUR, 24) + val endDate = cal.time + + return SatPassTime( + startDate, endDate, tca, polePassed, aosAzimuth, + losAzimuth, satPos.elevation / (2.0 * Math.PI) * 360.0 + ) + } + private fun nextSatPass(date: Date, windBack: Boolean = false): SatPassTime { val aosAzimuth: Int val losAzimuth: Int diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt b/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt index 5dd36422..156d9253 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt @@ -187,14 +187,4 @@ class MainActivity : AppCompatActivity() { val navController = findNavController(R.id.nav_host) return navController.navigateUp(appBarConfig) || super.onSupportNavigateUp() } -// -// private fun ImageButton.enable() { -// this.isEnabled = true -// this.alpha = 1.0f -// } -// -// private fun ImageButton.disable() { -// this.isEnabled = false -// this.alpha = 0.25f -// } } \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/MapViewFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/MapViewFragment.kt index 7a8eacc5..97aa860d 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/MapViewFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/MapViewFragment.kt @@ -29,6 +29,7 @@ import android.widget.FrameLayout import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.AlertDialog +import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.github.amsacode.predict4java.GroundStationPosition @@ -146,19 +147,19 @@ class MapViewFragment : Fragment() { private val scale = resources.displayMetrics.density private val groundTrackPaint = Paint().apply { isAntiAlias = true - color = resources.getColor(R.color.satTrack, mainActivity.theme) + color = ContextCompat.getColor(mainActivity, R.color.satTrack) style = Paint.Style.STROKE strokeWidth = scale } private val footprintPaint = Paint().apply { isAntiAlias = true - color = resources.getColor(R.color.satFootprint, mainActivity.theme) + color = ContextCompat.getColor(mainActivity, R.color.satFootprint) style = Paint.Style.STROKE strokeWidth = scale } private val txtPaint = Paint().apply { isAntiAlias = true - color = resources.getColor(R.color.satFootprint, mainActivity.theme) + color = ContextCompat.getColor(mainActivity, R.color.satFootprint) style = Paint.Style.FILL strokeWidth = scale textSize = 16f diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/PassListFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/PassListFragment.kt index da79e6aa..57045508 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/PassListFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/PassListFragment.kt @@ -245,7 +245,7 @@ class PassListFragment : Fragment() { override fun onTick(millisUntilFinished: Long) { aosTimerText.text = String.format( - mainActivity.getString(R.string.pat_timer_aos), + mainActivity.getString(R.string.pat_timer), TimeUnit.MILLISECONDS.toHours(millisUntilFinished) % 60, TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) % 60, TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) % 60 @@ -265,7 +265,7 @@ class PassListFragment : Fragment() { override fun onTick(millisUntilFinished: Long) { aosTimerText.text = String.format( - mainActivity.getString(R.string.pat_timer_los), + mainActivity.getString(R.string.pat_timer), TimeUnit.MILLISECONDS.toHours(millisUntilFinished) % 60, TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) % 60, TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) % 60 @@ -281,6 +281,6 @@ class PassListFragment : Fragment() { isTimerSet = false } if (resetToNull) aosTimerText.text = - String.format(getString(R.string.pat_timer_aos), 0, 0, 0) + String.format(getString(R.string.pat_timer), 0, 0, 0) } } \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/PolarViewFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/PolarViewFragment.kt index 013e4667..ff27c774 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/PolarViewFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/PolarViewFragment.kt @@ -29,6 +29,7 @@ import android.view.View import android.view.ViewGroup import android.widget.FrameLayout import android.widget.TextView +import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope @@ -132,24 +133,24 @@ class PolarViewFragment : Fragment() { private val radarPaint = Paint().apply { isAntiAlias = true - color = resources.getColor(R.color.themeLight, mainActivity.theme) + color = ContextCompat.getColor(mainActivity, R.color.themeLight) style = Paint.Style.STROKE strokeWidth = scale } private val txtPaint = Paint().apply { isAntiAlias = true - color = resources.getColor(R.color.themeAccent, mainActivity.theme) + color = ContextCompat.getColor(mainActivity, R.color.themeAccent) textSize = txtSize } private val trackPaint = Paint().apply { isAntiAlias = true - color = resources.getColor(R.color.satTrack, mainActivity.theme) + color = ContextCompat.getColor(mainActivity, R.color.satTrack) style = Paint.Style.STROKE strokeWidth = scale } private val satPaint = Paint().apply { isAntiAlias = true - color = resources.getColor(R.color.themeAccent, mainActivity.theme) + color = ContextCompat.getColor(mainActivity, R.color.themeAccent) style = Paint.Style.FILL } private val path: Path = Path() @@ -163,7 +164,7 @@ class PolarViewFragment : Fragment() { setPassText() drawRadarView(canvas) drawRadarText(canvas) - drawPassTrajectory(canvas) + if (!satPass.tle.isDeepspace) drawPassTrajectory(canvas) drawSatellite(canvas) } diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/adapters/SatPassAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/ui/adapters/SatPassAdapter.kt index 393945f5..2fadcb30 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/adapters/SatPassAdapter.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/adapters/SatPassAdapter.kt @@ -34,7 +34,7 @@ import com.rtbishop.look4sat.ui.PassListFragmentDirections import java.text.SimpleDateFormat import java.util.* -class SatPassAdapter : RecyclerView.Adapter() { +class SatPassAdapter : RecyclerView.Adapter() { private var satPassList = mutableListOf() @@ -71,15 +71,31 @@ class SatPassAdapter : RecyclerView.Adapter() { return satPassList.size } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SatPassHolder { - val itemView = LayoutInflater - .from(parent.context) - .inflate(R.layout.card_pass, parent, false) - return SatPassHolder(itemView) + override fun getItemViewType(position: Int): Int { + return if (satPassList[position].tle.isDeepspace) 1 + else 0 } - override fun onBindViewHolder(holder: SatPassHolder, position: Int) { - holder.bind(satPassList[position]) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + return if (viewType == 0) { + val itemView = LayoutInflater + .from(parent.context) + .inflate(R.layout.card_pass, parent, false) + return SatPassHolder(itemView) + } else { + val itemView = LayoutInflater + .from(parent.context) + .inflate(R.layout.card_pass_geo, parent, false) + SatPassGeoHolder(itemView) + } + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + if (holder.itemViewType == 0) { + (holder as SatPassHolder).bind(satPassList[position]) + } else { + (holder as SatPassGeoHolder).bind(satPassList[position]) + } } inner class SatPassHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { @@ -123,4 +139,29 @@ class SatPassAdapter : RecyclerView.Adapter() { } } } + + inner class SatPassGeoHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + + private val context: Context = itemView.context + private val satName = itemView.findViewById(R.id.pass_geo_name) + private val satId = itemView.findViewById(R.id.pass_geo_id) + private val satAz = itemView.findViewById(R.id.pass_geo_az) + private val satEl = itemView.findViewById(R.id.pass_geo_el) + + fun bind(satPass: SatPass) { + val satPos = satPass.predictor.getSatPos(satPass.pass.startTime) + val azimuth = satPos.azimuth * 180 / Math.PI + + satName.text = satPass.tle.name + satId.text = String.format(context.getString(R.string.pass_satId), satPass.tle.catnum) + satAz.text = String.format(context.getString(R.string.pat_azimuth), azimuth) + satEl.text = + String.format(context.getString(R.string.pat_elevation), satPass.pass.maxEl) + + itemView.setOnClickListener { + val action = PassListFragmentDirections.actionPassToPolar(satPass) + itemView.findNavController().navigate(action) + } + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable-nodpi/splash_foreground.webp b/app/src/main/res/drawable-nodpi/splash_foreground.webp deleted file mode 100644 index 6818eef2b1a086bb70b393bc32634466824f22d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22684 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 diff --git a/app/src/main/res/drawable-nodpi/splash_front.webp b/app/src/main/res/drawable-nodpi/splash_front.webp new file mode 100644 index 0000000000000000000000000000000000000000..c694aa09a4414699817f4c8e27ac8f4592d75a90 GIT binary patch literal 16966 zcmX`Rb9^1&_r`mYoY=N)x3O*8Ze!c_iP_k;ZKJW1#%5#Oe!jnZ@4ROIoW0jP^Ssy0 zUVEuXOGpTa005feB1#%cTv~7d008CRWeN7*DJ-WXwL|~_fPGO@NZovSSc?^1?ICWo ztSB_t@*YjeiJ<)s2-yY?3Pr+-(mIi^HxliakQ9Zkhr|SfH%KtSF8+=g`^!tXjs(XG zmVZ$R9G28J^<$J^pKF$Ng!>rhNtOIn5X@}Ube*65ax(XcfW8e}kA7_O#kJpBu{oMF zynXyW+Q}Dmw(+&(EdQ(E#2_~(w4Ykw4E^-E?Mhz{M%CasuedOY?T|$-JIP?Uygb*F zkg7LTdoZ%RH4hxC>rtU%A(5*Ph}A7XzAP>6a|+Jj)75I4n5Ybhwp?-*`+bx)@ESVH zL#!;@rL-TURT_MkH}UbEmk>TBa3Gv84tgoDkAj-a;@}q#>&hb7lnXcF?WyHWIa0L} zY|kARTsbZzfXT}RiUx9${8unk2IbsE0lID#27@a%a2neypVu&4qY{#xAW%UYjAd5x zWV040romsok<=qiVaRd#nYh6{C$N*0PcpoO4vLb|R_`HC6r_bxnWR#Jb1<^e{QSTU z;?)XIErZJ4Xk3f|AN!Q8O>$zH3*#JP2n@V*p^@Yc{oz*mBEpRDp?7V3XjI*OmW&zD zPpR&r*O?p)eVJ5g|4oidA{?rWnt6t*{mnL1`!^>( z6p>;)<+Kha8jB3`OMw$y!DYDRt{qO>IV|#N4^l>2#mSt*;jVBeDnAW2l*N-X>OBa< zrwluxFx&o8+~*Y+Cw(hr^^$aDMK4@Oy{x3GBDRdR66LO2RtIEMLh)WBX)YAZT8 zg*L`)xEc}?KR)o`rQE50ZN#R$S!8e+EaS<@XZ_$vdyqC`EhS-zAENnCCLSrH5o-F+KBT=gjaaz;<23e?{CN3^ z5PO=XRe*zIONt~|bR!P~b$*=+5Sx4Y(*KD{s@n1mNwDLA?xP%O5w4U^@hUK|ljsQ~ zea#Lwa;6;1=jsBJTL67H(0Ad-#CCaaQD#*uSzSZBALu|U@PU9ZbtPhvV*-_3RUp~z zTj3$VSMfhxqqCCA`RU~Yul2k*lrfVA^20JHL53}Luo-Vhwk)Uk2(Kcj3j?`F@ZBK8 zWbNpwO9kd&Z3sm+GK~sjiM9n=dceyI?zq{VM3(WN-;Z7x-3qXcgIP6eEH@rr2pOCF z4?J?dJvl_fcFO(U#xb2cZa8h;pzx`j7Fdg&v^>ekFS_08I!Z4krhfq*lQnjRVGX_u zN}ed637>c4l~Bk}hrbJHNV56wGuD|=1>+rP+nH!3{-4ga3D@OAOP)mX~&835& z|1Wgyx_&4vcktk!7xh}Tb%nzs%m>)!%Vh8!VFtmW5VPzwoTEC`gE9Z09h;q%qN4w% z1#SICWUO>&m|B6W;j#q>5nnnA!qgXyHu`&KfDol?nNOzqyzA+NjIjCQ0n~2z)S;b?xL4x@Hb=(kUhHWvOlf;skN*-Tl9)P|6u8IFd?Mob6gP^OvBc?Ac7=c@<58pvlNBU=%NCjrgmuk$k0 zMT_|Szg|i(xAuW9?_Hw2T+#p-94c+X-FFlJ*86A~=p!GbPjJnp3z!-pW%^C{192+O z2nCUjRrd+y=&F?v>Wb)q^jzZ$OXd4_DvOT*&Kp_qa2?`rnm^>mqKJ~=AsXM>#|9vn zM2`NB+nF3|0XxqfX^e}@{qj(Lac~mfK?u5#&};s8I|oTWLglWUF4BA+8ah8}rV4wF zP>*0GqqbL{_!vXR1=T!Ns_>~P!_USY4$9m7viVVSkRe+um^P0&W|5r?d8EHK)TcB< z#Y4*qMJ3Hci_TH-JN<&{_&V~j=+R&7Eehu%*MOx+f&whwsd>f&mkBr_KR*dHZQfIK zsgFY1@mS_26ot)xve^SRbOOh4EY03(mK!ZE1nsU_+<)^E2sa#S!J3~k6ku({W(nml z-X9R*q~B`+wYw(Jq_);W4!-}@h1JUFBb$wghQg!@1)T`Dv#@mLMptdWahRnl#F3C| z>cUgonWC!C(6F09g-#WfzkrCJ^C7eaJV}c_J;`x5*o+vH6&~v%@M<~onk>r7xc|#( z(U}Q<-?9UzevhM?J-A~*v}_HKcTh{NgTuw9?9d0lC$=Mwy-LHAxNc0Fy~i3<=3kg2 z$LoE3CN9!(P}uxW1nIzT1!0RdHRKG(n!^A>Mh~$?TGyrB_XRrDBYM8p(LEgX@>)Rgh(6GBHWeP zRSx(^NfzEDFf#mN$pQ*R3qpbx!m1VEF%zJ*{{a9Z+dl%5I4kNl82v_72T)6@C!(nE zYM$t4FD4(`&m17!nG7E}oIb zpp8_oH`o|)&^9g@k3CFRi7o#sLd)|p*VG(Sv6-?FG$U&J#lWvg3qVqos|UM87B0Eo zk}p6g?h&M`1pcO$cXWYiZ;DH}k3DC~K}qmA*cXQ-{;S9p1an=aJ~nHbp- zls7xZ{Y2^*sK*6)To9?)O_fIBO7A^0)%QuJNDqI^loydOG0lNvDxt&lD^%UL_rV=~9&X#z7=OOndHL(xn}o`X3e2aH z{{=Ca>P3!PbkMn{b}88)*I&he-F`8$itldv^{j{ZBSi^U40WX-=e22SB@gl+lH06% zZ;eh09}iB)I3^>Qbv2rfOuw0eudgNFpO+y@{95i>FR}|IpX_$JEUqeNn-nSL6O8=D z;>tFOfK9=p-TNV_=BGt^Z@~$hL@=R{r1Y0#EuTQr3pOK#l?=?%>tnUF>DOseg} zdQB^7EC6gQWYDP0P9eUeKnOB2pwsr@S*-;Hdq`#oomQLOrbkyboFR$CE}-~?RS95R z%#Lx#Y$EipnZ4+DVId7rqv&1N>mk>zBsy~u1W~Ju-3i{mazS5C0%g_{53`=N+wDg4 zj&NZF6qdhWE|d>2B)$;)-N#d zPJw@piuy+T41|%4w|s6O;uGP%{xrM8(Afs>x~Ld?*L{(O-@wCs66J>+c8wAS)uT+w zlVL8`82yTLfx7w&r)Mo8lMVTZ;RHN41PHPOB;$BTx^`EPqcjo*El9MLd;D#{#>ybI(p>tY z_Rc8JX}!06O~CcFIGiu>1+3Zq{*#CU87;>r-MJTL*75%^pz}n%;5NH26?U*Bpk4Hh zz-*g8+PcPW%a)+)Cca>3c#^LTx;~ed+3Gttx&HGc?7%?V>>1EJYJR?{jiM*_Qy=i? zY<6BM%0jKdSYBKO&)QPsFSM&7s$vbbx-d4gqXyISM5JQC%owMS}_e-zMu|3fpmGuG1F!KCC! zUH(K`*Gt}M@E-+q#hly3rVVjoB%N z<0Z{KO#cule`c&RB=M`5w1#i7Bvy}9itNc~DPBZZ%?h`)f z8r1N0;M!!IE9_7$seReEt?=mmKLX5|_xX)`d6MCin@G)9{_}H#e)CKau}AVEKl(+v zSu6cN0yc`SR%NRaf3}?e4}m&VBYzP$Zv)NQ3l{Azhv+P@@DIlS`Jpdh(k_Rs!YDQaJMt4U)5of@JJ&9a{OTEpr# zi<2musu{_>(VV##&cwY!!sIGnItsfIZ;J>2WpNDfQU^b>jqEz&pd=a$jqZYD+aFna z)+BA4m}n<{wKEhA)3u`i00IZzXX z>UTWQ`jRwa@#3zA*Png z{pPdl<*X@S$Sc;j8=fqV;Xb&)tA0nh+I`5G>5Z$>iu|yOOLpf|6c-1kx~R7s{80FD ziRkH8HqZ!ffujc`hsaQF3CmF*#z`l+b9VT6k-UEg?`ySNLQUvg?iP$7#9yVz6fwdV z|M%A^yr?+$RDG2tB?cRRiP6WE!e^N0sT>iZXDtqQreal98DY*c(~R-@wgIvmvI%^* z3att(QH0uJWQ!ItBjj`mgdGv`_gDWDcf1GdDu#uJs?IdWo*l&l=(}bwkW(bXP0uarF#Nih|QC~iu zusY*BG7M~D`H2WHE5>6-o)XK)^P7P&uL@*5g$I0M#m0`CCWD@HV+txNJOC{eM_O|$ ziz6WXK86&Q;9EZ0yOGMr19<>VwW2%z9RNDgB>wFA_qdg&Q!~%F9r~shQA?4u_FSjf z6E0iol4#X0iQOj+3c;THRmgMX6p=;_|8vXzt7-~nCm+^MI5R%Zsak6vInNsjSRYpD$>Kvmhjxuj0I#O4+Y+6z>YE<+jo?wDQu-y#}2%HfUGey9i8Z5QDZ|VUA z8^VcmUZ1UW%V&c{+9h%NxqeFL59DqWQ7l)HS)oEIvJ^!F{Ny-fi^+GdiB_(AZoNGN zxARMGp{Y?Ww!Rg|h2ZTs&b$RU_r}R{qN28s+#~VfilXUff$jc8jHL~uc!hL$CQ3qp z`a;A;P4H%d_e>FyNm2AMdOgxam(o{4`nYRXpB8IMbL8I=Re>hu`o&?$8uA!Pa$_Dv zn|hZDYVqcUC)ZwAyz!w}VzX5gxp6XF4o>S6^iIpzJpPNsLD??-BFxLLgF7;X0$wvM z!`hFP+FFCeKeB-;!h0aKmNWS;_#9EN;!9It`h5)k@r4#%>C5vBVRdGy{BIcecfNW^o1zk9x+3 z!L3MGVSl~8tYrD}c!--C36+vvYlR{qsj*29G0$yd$R=+2LkJ01X#dnt1UI^No|jl; z{IfZ_HssB&h7fMCRwPDNkc@k%^LZt<*o2e$mJ>nl^kh&Onn9HTeL3w&;f)g{nW%k& zs@?apqH>^|HW|aqEqK?1ggTGS!PH8*wQR}hP!A=36>tQtT*O}_Qpm7`p_<>#n_yO| zhqR7rOq5BANaIItfT!+#9x=n1joC#kGL!^Ub0Rm@bdUEOH6p|woF4xce3OU^1>K~u zLV0Qk9`NPHhB}=HeGng&EH36soc)k%Ub#}@fOWGR8c~f$jM8b^E|Ir`87n@NQ|kEJ zR>-?L2Xl_WM*24|RFD9<>bzPm-)=7c;rM$*D=SA4Feoa?^C1e#2Sxy6P_~O81PiKZ z*~%L+6LU+t!x9^yS7E_+=Cck+j&aMd^n*Ez-xa68$tcV}y%q{0wnAXvEy|JMu-#=KoxLr*De#EHT?l$HB&q+u^Tt0A!8>blZXW(P*lE&C~4%Sm#0JV$691-xWlW-WZiF}1UsI+bC z3DR3W5)ql$3| z0(}WW9z|vY)|AVLg3_{JvbIckIi}u%gvDIHM`a&!bisX|Q5E4wL0M0sNDEA^onhft zv#!fYVNa?fi2G2XM3_`T`{S{Sj@*nVQ7hI|&8zL374?|_(|#C*jJd^Xgb|!4QagM= znYU%}@%;hAJ$OwI&-Bvo`^phftilFV{Aim2?ul=+!!TVbRVjNw)CvaOlf^t!MP8xz zVYTA@^mTyhyH=s`Laxo&mN6h<1iDH%m?L`0?@vr;Gacg9{uV>Lklj_|FS%vIy`e*$ zrvr;oA8=kl>5@mG~2Bv9# zFECY_rU$2#2li|*y%AjBxNS*tj)?GTCY}Q;TNLnbc6NR7$TXnUL01Hbdb!DHE(>&4 zsjXB6BbuBJKLeKaCG%bca3uzTb(}%e{#3Q!Z|$q+Xd{zF4IL)PT!_#;(p&k&vf=1{ zSNe!S(0o}=XMW5PiuWVGa0cu<|CXGc2zwm}Z`TmFdDkxDC(9dtawSKfn?C#(ETcwy46Dp%q(lO(RVLswrf!+h$U@pHe!>K& znhaBPjA9-d$g-yM$N+yn$Y{u%sL^&n?Bm1v>WbSK1 zTJy0RS}lDf4>XXDCv#V@>$B?{!4wEhcfce3p%ad8>Q&#UQHwXQM+GUffSKd#2zBfI zN+6aU-j4cKf?eVK{a%hj+JnlIk9Hppu(FAZ>Ebic{m)+H(OZx7}h!nd^`n6`&t#gef`eme#rZ+D7QXzeMeGLe> zZ#BD}$Z?8Zq`};s$>w%G3X1hh_X>ow%l$hX4++wKKM!*E1}YailL_r*K860A$$se{ z$c+;%5j=il-tm-*KDrCA-iaYzt=?H!X!Yu!s*xy=kM^9hzC6(;a`4f%z{m2Xnohh| zXF-rqSjp2k4gusU$>O}X$DLOL6ic4ukt2~|q;4O{Dz2~rEa{r}*&-InVLWqbSfHDdxEr*KMY4i5V(Ngb4+`FdXq+nMg5AXWUM z$9VD&jy(_3g0}FT9hW8&C6~t=!JV!THTv(UV1R%7og^ZZ002uO;1?L36_^#6K!R9~ z3}s<&eyIxV`3)MZiQT(Tnqb|=8ax~G@Xp>>_*HsKPTK3&Rc}+M<9qyL{He;r@XSNMDAxA?cpYw9oR$EWSqM`9)9kRDctJ1$vaQ!RKui@$K6aEePqPESK(pU05^)&O&P+ySvgZc6JUh($( z`OaByj9=O(w>R;#{oGC+_8;Og!M-o+kK`wAFH45*ojLe5!_=?Nn}^TQm)Q&G_FULr z0P(zkwrBJQ#Fu?!@0{Sw=aLV=AMT6yEBF1W-SFK1QgHOE^yAMX;q&p6;=BKu0N^Xd zU-GN>lX@NbE4)5;Q}Hcl-@j_->B~*<-{OPb$0dO|~TBpuX9P;afBWd8& zk~Qn4w9}#{Tu*V3!V_epo&SP-@uSjYnI~&?ZFI)?TYR`ZXT!H9ROa&{G>muJd|^0L z{Rrd%cODBPJQ5$%_SZG6ZUiL1+KDm!T`RrsJAcB*qm{w|}dpQEt#+SH#7 zEn|zR$?M|%TwM?uk7BE4AZX9cF7koOzVgnPQTczL@qZy8etge0-Qzn&|5?Jp zs&}Z%*cJ;xTQ=q;aqS|ZdRJ)$9KLy(jU=Dh2e)l@y=>3rZQkMGEy4J3Nyrg!^<(V_ z&|@a8m66-Y6-~>Z1_Oz%qVe#4imC)7=6bWgkG%?=E1F--E)51=%L|Q;*I;;hIczdr zwWePvU?E7#VWB+}^iE7GsKDJo%8KPKr)s#(mc;8oY6{2}{vrFl2^`|-F}`w_erv)? zI&~9nVa!Y>+m%zTShkh!PB%A_kB-!{5(M6##57HrwfV-wO@YjBvForBg)U6kQ0oqD zyalJ}9~dW~(y9b{En(ZpM;Sh-!d&tjyv16B02Qu~3Ol(0J%!a?aqlRJ=qrR6)roj# za@OIbCm!Id^RJ#h^Gn^KlsB}y!Tj2{8JHTLpxtdb-lUY@UTF!|bjPPwb@?N|GnAd> zTg{1-;@AOz&yO}G@X(jj@fuHe+2OGKcONZjd<^~EUEi;TWCQR8%q($M$9Zlle);`B zPr0AqU8zOo?bno5oL;93k5?acyFhX>(?ON})uhrV=1I|?##G*-o5_OIh1iB1)dUE* z`Hl3A1Mi`_D70*g)~#4}+P+`hVt~Y{IPxxCE`&3}W33rZe+UvDo3+&vZsSH6w29}@ z2mc#AYJX*S*PQ+IxBX6RHI%T%2hN)xI>W?i=p&Eze-xj7SLX5@rKKU^4T}WY^F4Aq^cTDG5!aVmyGWI&vum0+&DyPbxxBhr4H1lw1D<>m7 z`O9aVWt9ifxYfG);Eg>i7ug3TANWI6Wwl&12oY*-A5O6l>am=g*ArYb4341}47 zYSJ7_`mGF2TzvNfnX75-K|`j|;8c`4Np~|J`}9pOFbsNM{pACbO~6)K3!gX6hEf90 zC`&j0IVC3|@zl*GAf4r?Ps1+k`&_;cuZ&w53=G4}~tc73+narJG|dl`DNDOsO9hLC$t^P(SkZk2DEnbjo(`?O=95cE7GMs3~DPv zsjraTG-U;`qp>IX5r!Bci97KFO+jGDdqv9t&!i-ARJJ;-Wy9G4Gmw^q-p8NQ2qkR_ zLY+Nl^z2d_Cg+TNnN2Wu4OJ(o+UFYLF9Tcg;3Yx5^^~>^qciP%I)Yp>6A=vvY>kZ>dm?J-Bx|JDgcafsw#J#9rj5@n?m`-)u*v1T^ z7D*qx!(Ac*VEXYBec7RcmTP@}TDVOdKRFk~#oZ$~ZNB76?>0p~D>0`D!9(_F?eXG==!NO_cFA1XwLg*q! zI2ls0a7C;AvkYsI<|*i^6-4V*B!EYmCz%bn7U9*)&XxZ zAtiMK{Etza8!|FN2m+>-_bM3CEC$(!)VR2-Xv3PUqg)+m znoor7Rc0v$zX{FUZBNzO&07j(Ok zv#Aa=q?;b2G+0Zr*)uUNKRB>Vb@gRFGo3vT9;3=Pm5QkIWrR0$ywkvecl z4~y;uYq51?>-~ezBFmI`j2!E=uZEVbQTJ1j>RB!+oJ`BG$%0fs8FM9^I`dTLUL>B}HYZ%RY^Eb!z zRB&o)nOqQJ?ql(_#N7Bt{UBVrSdAjA{oi1*6C}c+NMNINRbGsqbxyYauW7&oNdWh0 zcx3)t8h@o4XX#{ zv3K!hijMxb-q3m>f;xGNfWsndS(Ao`qRFMv=|UWL_Hxxo_~gHpW;9LzzaKJ>tT=tK zTw#+7?zS>qe>OeHt~`1EySw8>Ft@n@7B)yS0~tx@#Mx3G?XOh!&X1{XL5XC( z1)t@+^-O~yC zR`Pf6$`S``$Zgo%qJi5i41%Dtt?YV*Ln)r6@@Q`qFw028@wr8G0ryS zZw~?C2b4!d%E|G$p^U#B7PZ2DPaQHe#nCL1B*t1_i(<3jMKCYOv~hqPK~>e*#-i21 z*CCfXZnvrY7*$4o-w`ldMA{tU)_J`?t&RIt#4`@}!D2m(;TZ)}rdIa{2YSx`;4enY zq4Y2K$;dJ#AI0g&>io=RIEw)Pcj&$_0Rc)g%w)ZtOgG&Xh>#eoX(VYJ#sf5peZU1pXfVFN?#$9tFDehs zG&GulHX!W44dreta0as`&TxYg%2-5WOLxEX3rPA-9W3-HL#Cy7q64VAl5?!S8;v{Z z<*wxr!MSggw)~Z+$_Pc_=b`II9XQB0gK58Sa@9ZnISb zc(nz(d^Gc{M<}91ed^j={D!ID&AybcF)vfKL?*RUR0If~rKs**rD5>~L?O<;yvqF>0r{$}iZv zxu@PcUsrHc5_a4$V5^Fj{et<|-2gwCA^MFW8$am zwQ1N$X=o>4uDI0U!tW1@zVqBq*2#)ag&h39esq=CFrR%^k9zLEPX97mHY}!2u}YGP zWSOvcCgk(eT^Xk>VKaY*=B}jN8uZ3@H_w%cC#oUR9 z15i|7eO%v5=$eYNcF1qCw9E1?Z}%@kb?YXV#A@9(@Uz>oTq&BuJ;SxtYFgfZE-H6< zDP-`kqf`c~K>3;@DFGnD%T{IPKM^y64Auw1msv5Jw`=1e;_R3suLce1oOVUbZlSk+ zgB#RE9|F8)RTDo{R2FPrZeDJgxKw4HC>#|G_EvKR#yDn*O0 zjW~Z+GLm--`vj6pixXrsV>P}C0vTDs8$z^uF?};^_j|HK!K9t+MqDYcR;ccR*R^T{ z!^fP}z&3zi2C_)CN78PJySeZF*-0duo)G6`<#_<(8&%hU3Mx`>6fOgO>Z@-=TzqtL zJ;R1NxPOiNX;VmwuY(?_eBCAsM8&;HV`XpQDduklCrUC8rf<@>m?RcsIg(%Oz+p!e{7`rwYdq0Zf?7PN$cQt%wi{VWpP*6P?4O8tS@R?9Zwkm zK)*?y4^wau8?1vjsyA|;e{oH=eqni|gezUt)MF~DLs5n~+xnYd=$;k2e;13gXCwmM z6PXBR6zn+o+K%`@v`Pvq%K^2JGg><=o%c%|f^%U7KjM1e`ASP)4JFe{ZxKrW2kqu( z5i(Rr0kh$Z5KMbl4IULw9pg1vld41G0^vx!6E6QBre@zBgWSP5T_f{}{%hix;7i}{ zVjc*Y<9wq%Z=q?0*u}*yWDJvWyn$;>g)+`$TczoAJw>u|znX*Zc3}u@cV^5202yPD z##2l+lg|5HSw=#i)5kVX^rsN>;aNN18COj z!$;y<82GhCZAlUoumOddv429&hLgPr%tdX%T`>?=6!q*--zGf8IwqHzndn8T`xSAx zahku=54@49af87?5}lH`JF}%q=2H||z%sk{5oYVQXba0o;>|+XrL(XA`PUHJ z1D?>+_*<$iS6BKl7##MmRxn;Azs`YZ6Nh($BvO|a zjjc8OK^$~M7MQO~;YK)0_0IECIuj+C<@CN?ykE%BUNH5aUOwlC-h=#oNI6^z?{g_< z7t7j6OMjyIo(*9%qZqd`QCoYS@@Po+#rX%h< zq^I{s=nc>urdnNUQng6MKJ5o9Oa7p@f=}=EROF2?HD;Nm219Mxk!timnFg`3cO8=^ zSvbfYz~Xer76esz1PrG58?YcUc3pD^p}a0#2BUmeqQvL2H18fwZ3JV{9S)+Ik_B?o z@XnM6f}TN-Qc^f-s`Rt@1xlHWkii!_dO7Z=nb66(2i*0kQnD$cwn7O2@N6}>@#`Tk zHR#IY)Db?3DI^D7H0_?~7bGm^c=P>(s<)s)VrQ|IWbj-Q?WhX9qz|39Zm{e|1RM zIy(xyLI6Yxqp!D@l_LosJO|hzz^nxD;3&@^uiG`MtV6<|e5hgzFB&6B_b8Q7)p$`y zJ!!zp!RiQJ!7mw@!?uW_f_4)C@f;atA)i&Z;MB8qyRm~ph#x%^{i8Cu_h*iDA@UL0 znHODNQ0e{b5rpqlcjHTVj%kR_56^5zitsVh-^)*Hs{{Iey{d5zxW+D2in<)mPD`rq zyk~Bdh(^PBB9WBSZ!*b3YEl;5`%lL4o2f!w*IR*7Pak|q63mnbRC9xTaKugnb;OPg zWRFu6!^7&tjzn>|iifLznX}TI4=`i{_!1I-lUety!-D(sL97vQ^3T?^$K@Xou9O&^ z>OA4XNeNj7bRmx&*5My0Et>fsgLn88t081lmGa~|)o3IVFOZf@da83aXiWW#51JZJ zS~7ZY?fItB=$#!kWi8(?sMoZlu$kvqUDw;n((Zj~v@&dm%G79@I0gA5e%B%=O1Nn$ zBr2@$aspBq_LG?<*oY)qeRh+u2!-RBh2%(5JU{}fqW)xZsw;3*`I1|J~5QM$f95{fK$_(Yh*g@ehwMnP*E z4u24PKGaglTgaqf-GFO;S=D0z;)5T3ZFd2&kqG7Px5Vu3*C+KeuH;tjQK>;|8iGWb zRJ2CxvaDMxK_f%`cVCK;)Ng1BKjZ|%WlJViHdOZirZoC0M~sVn`M1>_ZNfatatxrp zS``LV8RKP&xE6_9VI@>i_q6LG88+=(89k@%g*`?eH}>2uP*8U zx8amh6fL}lYv1p{$8JZe)t*kuvIhedorBRVZ|#ytxi>@{O?5h{tR;nhsbBcnU(Hb% zpb6xx5PFSKHoGoXmc@YNFW12W( znjQvjJGXt(oh3f1D+a1#U5YpXY97QYAi|CFYuB}~F78)2 zxQJ`&RF55I!PGC6-P0O_sYP&Ln@d&6OvYdwVe$Mj0<-)W8pdKMkB^`0s@ zomE);>6mx>!C6DJ1#a?trlP_G3Qj>BepCwMgzbtu!R*k=G_a%)ogMTKz>205Vtl@t|(EG*{IG`G`GHVQ)8p7_0C;nH z@@)2p?}A2za9c2lRma_#(@jU{j5F_OZQqB8;)A)v1JX9Z>pIL(+D~-erL_<DumL52E43r9+1w$@u40wFQ-yk zD2Q2f+t7c4MKGdi@KGh6H?6__`kOKT*SA(dekR-gKh2!LTXx^zGaF2fnywcEFKo`p z{(ue4on(9IZ;+A1RYfnQg4hrGjzT+XIiz12UB{=J5)J$gzbK8%KG~E*s7Aud(reKO z-h9@^hqY5Qo^c^6F^Lt-m1EXprEfWHB2ISe%L(QP`r%Q%`Uh&ewtnG~Qp0Tl0-~&< zC$KbHP>}08J3eq<&CQ1)43k+4B4Pgi{|S)+ZvJIUB0FbLH;@%_HZ(RMr7zCXfeWTA|?&%ZauuZw-dR^zG zJAn=O8&4X|IPZ^auqsS&rP~Q!!{mn&SNhu#k5=(7>L; z8G>XoGI6son3M-932SmShSlx2#5k-K1;ZW`3%fMbqX@$h-tnbsW%B?mK^KzbXTOvG z8Qx?bH}(4VsaK@U2r&8W32>AA71(qcfcOZh7ZT^N$BYBy=7Q~l8fPv|*w-RV0SJe0 z_JC6$9n37MFX5;8`T4)AzuDjHsLeFQ>R@skeVVnFChg~Qap@%^{QBel<6I8J^j#N$ z*`M)R{BgRnDde`On*UnlTKHp)=`3Y)8UIo~JeMtvA)<^pih - + + + \ No newline at end of file diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml index 7639ba45..aecc38db 100644 --- a/app/src/main/res/layout/app_bar_main.xml +++ b/app/src/main/res/layout/app_bar_main.xml @@ -26,7 +26,7 @@ style="@style/ToolbarText" android:layout_width="0dp" android:layout_height="0dp" - android:layout_marginEnd="16dp" + android:layout_marginEnd="24dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/toolbar_filter" app:layout_constraintStart_toStartOf="parent" diff --git a/app/src/main/res/layout/card_pass.xml b/app/src/main/res/layout/card_pass.xml index 42dd675b..e5b48269 100644 --- a/app/src/main/res/layout/card_pass.xml +++ b/app/src/main/res/layout/card_pass.xml @@ -29,8 +29,19 @@ + android:layout_height="wrap_content"> + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index b934ae74..28a7e779 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -90,15 +90,13 @@ Долгота: %.1f° Расст.: %.0f км Высота: %.0f км - НПС -%02d:%02d:%02d - КПС -%02d:%02d:%02d Модуляция: %s Инверсия: %s - Исход. канал: %.4f MHz - Исход. канал: %.4f - %.4f MHz - Вход. канал: %.4f MHz - Вход. канал: %.4f - %.4f MHz + Исходящий: %.4f MHz + Исходящий: %.4f - %.4f MHz + Входящий: %.4f MHz + Входящий: %.4f - %.4f MHz Проведите по экрану вниз, чтобы обновить список пролетов для выбранных спутников diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d0abdbaa..7dec5f27 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -102,8 +102,7 @@ Longitude: %.1f° Distance: %.0f km Altitude: %.0f km - AOS -%02d:%02d:%02d - LOS -%02d:%02d:%02d + %02d:%02d:%02d %s Mode: %s @@ -125,8 +124,7 @@ Amateur radio and weather satellites passes calculator for Android Big thanks: - — To you for installing and using this app! - \nMay your sky always be clear!\n + — To you for installing and using this app! May your sky always be clear!\n \n— To David A. B. Johnson, G4DPZ, the author of predict4java library which this app is using for all the SGP4 model calculations.\n diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 488f1d41..6db339e5 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -70,7 +70,7 @@ wrap_content wrap_content center - 28sp + 36sp bold @color/themeAccent