chore: Upgrade Gradle, Kotlin and optimize imports (#726)

* Update android.yml

* Update android.yml

* Update AndroidManifest.xml

* Update android.yml

* Update AndroidManifest.xml

* Separate steps

* Avoid linting

* List packages

* Build debug

* Add stacktrace

* Upload artifacts

* Checkout

* Wait for build

* Fix ADB path

* Fix paths

* Update targets

* Test and check

* Fix path

* Improve pipeline

* Fix CI

* Fix action

* Upload on failure

* Removel inting

* Fix lint report path

* Fix path

* Print paths content

* Add params

* Fix path

* Remove lint

* Check

* Test only

* Format

* Re add linting

* Remove format

* Fix paths

* Uneeded

* Disable telemetry

* Fix library use

* Revert lib change

* Use Gradle to deploy

* Run instrumentation tests after install

* Save artifacts directories

* Run instrumented tests on main app only

* Manual SDK install

* connectedCheck

* Use runner action

* No manual install

* Temporary comment

* No artifact download

* Add Checkstyle

* Pin actions and remove comments

* Needs build

* Add Dependabot

* Harden runners

* Add checkstyle configuration

* Consistency

* actions-update: Bump actions/checkout in the actions-dependencies group

Bumps the actions-dependencies group with 1 update: [actions/checkout](https://github.com/actions/checkout).


Updates `actions/checkout` from 2 to 4
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v2...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>

* Hardening in block mode

* build(deps): Bump the gradle group across 1 directory with 3 updates

Bumps the gradle group with 3 updates in the / directory: commons-io:commons-io, [com.fasterxml.jackson.core:jackson-core](https://github.com/FasterXML/jackson-core) and [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson).


Updates `commons-io:commons-io` from 2.8.0 to 2.14.0

Updates `com.fasterxml.jackson.core:jackson-core` from 2.14.2 to 2.15.0
- [Changelog](https://github.com/FasterXML/jackson-core/blob/jackson-core-2.15.0/release.properties)
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.14.2...jackson-core-2.15.0)

Updates `com.fasterxml.jackson.core:jackson-databind` from 2.12.4 to 2.12.7.1
- [Commits](https://github.com/FasterXML/jackson/commits)

---
updated-dependencies:
- dependency-name: commons-io:commons-io
  dependency-version: 2.14.0
  dependency-type: direct:production
  dependency-group: gradle
- dependency-name: com.fasterxml.jackson.core:jackson-core
  dependency-version: 2.15.0
  dependency-type: direct:production
  dependency-group: gradle
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-version: 2.12.7.1
  dependency-type: direct:production
  dependency-group: gradle
...

Signed-off-by: dependabot[bot] <support@github.com>

* Gradle 8.14

* Fix egress

* Fix egress

* Audit

* Revert

* Run checkstyle

* Add task

* Remove checkstyle

* Remove checkstyle

* Fix name

* Add name

* Correct reports path

* Print paths

* Print

* Upload build logs

* Remove logs upload

* Misc

* Cache readonly (#4)

* Implement read only cache

* Build OsmDroid

* Parallelize jobs (#6)

* actions-update: Bump step-security/harden-runner (#5)

Bumps the actions-dependencies group with 1 update: [step-security/harden-runner](https://github.com/step-security/harden-runner).


Updates `step-security/harden-runner` from 2.12.2 to 2.13.0
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](6c439dc8bd...ec9f2d5744)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Upgrade to Gradle 8.13

* Upgrade Kotlin version

* Add buildConfig

* Optimize imports

* Dependabot: only upgrade at patch version level

* Revert Gradle update action

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit is contained in:
Florian Stosse
2025-07-20 18:56:11 +02:00
committed by GitHub
parent 5d4a0f9a60
commit 91378d5f79
38 changed files with 227 additions and 79 deletions

View File

@@ -33,7 +33,7 @@ jobs:
- name: Setup Gradle and cache
uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
with:
gradle-version: '8.9'
gradle-version: '8.13'
- name: Run checks
run: ./gradlew check -x lint
@@ -64,7 +64,7 @@ jobs:
- name: Setup Gradle and cache
uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
with:
gradle-version: '8.9'
gradle-version: '8.13'
cache-read-only: true
- name: Build app
@@ -110,7 +110,7 @@ jobs:
- name: Setup Gradle and cache
uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
with:
gradle-version: '8.9'
gradle-version: '8.13'
cache-read-only: true
- name: Configure AVD cache

View File

@@ -2,6 +2,7 @@ apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'dagger.hilt.android.plugin'
apply plugin: 'org.jetbrains.kotlin.plugin.compose'
android {
compileSdkVersion 33
@@ -130,6 +131,10 @@ android {
viewBinding true
}
buildFeatures {
buildConfig = true
}
// Gradle automatically adds 'android.test.runner' as a dependency.
useLibrary 'android.test.runner'

View File

@@ -20,7 +20,10 @@ import android.location.Location
import androidx.test.InstrumentationRegistry.getTargetContext
import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner
import com.android.gpstest.library.util.IOUtils
import junit.framework.Assert.*
import junit.framework.Assert.assertEquals
import junit.framework.Assert.assertFalse
import junit.framework.Assert.assertNull
import junit.framework.Assert.assertTrue
import org.junit.Test
import org.junit.runner.RunWith

View File

@@ -15,6 +15,10 @@
*/
package com.android.gpstest;
import static androidx.test.InstrumentationRegistry.getTargetContext;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
import android.content.res.Configuration;
import android.content.res.Resources;
@@ -27,10 +31,6 @@ import org.junit.runner.RunWith;
import java.util.Locale;
import static androidx.test.InstrumentationRegistry.getTargetContext;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
@RunWith(AndroidJUnit4ClassRunner.class)
public class LocationUtilsTest {

View File

@@ -15,6 +15,8 @@
*/
package com.android.gpstest;
import static junit.framework.Assert.assertEquals;
import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner;
import com.android.gpstest.library.util.MathUtils;
@@ -24,8 +26,6 @@ import org.junit.runner.RunWith;
import java.io.UnsupportedEncodingException;
import static junit.framework.Assert.assertEquals;
@RunWith(AndroidJUnit4ClassRunner.class)
public class MathUtilsAndroidTest {

View File

@@ -15,14 +15,21 @@
*/
package com.android.gpstest
import android.location.GnssMeasurement.*
import android.location.GnssMeasurement.ADR_STATE_CYCLE_SLIP
import android.location.GnssMeasurement.ADR_STATE_HALF_CYCLE_REPORTED
import android.location.GnssMeasurement.ADR_STATE_HALF_CYCLE_RESOLVED
import android.location.GnssMeasurement.ADR_STATE_RESET
import android.location.GnssMeasurement.ADR_STATE_UNKNOWN
import android.location.GnssMeasurement.ADR_STATE_VALID
import android.os.Build
import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner
import com.android.gpstest.library.model.GnssType
import com.android.gpstest.library.model.SatelliteStatus
import com.android.gpstest.library.model.SbasType
import com.android.gpstest.library.util.SatelliteUtils
import org.junit.Assert.*
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Test
import org.junit.runner.RunWith

View File

@@ -17,19 +17,27 @@
package com.android.gpstest
import android.app.Application
import android.content.Context
import android.os.Build
import android.preference.PreferenceManager
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import androidx.test.InstrumentationRegistry
import androidx.test.InstrumentationRegistry.getTargetContext
import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner
import com.android.gpstest.library.data.*
import com.android.gpstest.library.data.LocationRepository
import com.android.gpstest.library.data.SharedAntennaManager
import com.android.gpstest.library.data.SharedGnssMeasurementManager
import com.android.gpstest.library.data.SharedGnssStatusManager
import com.android.gpstest.library.data.SharedLocationManager
import com.android.gpstest.library.data.SharedNavMessageManager
import com.android.gpstest.library.data.SharedNmeaManager
import com.android.gpstest.library.data.SharedSensorManager
import com.android.gpstest.library.model.GnssType
import com.android.gpstest.library.model.SbasType
import com.android.gpstest.library.ui.SignalInfoViewModel
import kotlinx.coroutines.GlobalScope
import org.junit.Assert.*
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith

View File

@@ -35,22 +35,30 @@ import com.android.gpstest.Application
import com.android.gpstest.Application.Companion.prefs
import com.android.gpstest.R
import com.android.gpstest.library.data.LocationRepository
import com.android.gpstest.library.util.MathUtils
import com.android.gpstest.library.util.PreferenceUtil
import com.android.gpstest.map.MapConstants
import com.android.gpstest.map.MapViewModelController
import com.android.gpstest.map.MapViewModelController.MapInterface
import com.android.gpstest.map.OnMapClickListener
import com.android.gpstest.util.MapUtils
import com.android.gpstest.library.util.MathUtils
import com.android.gpstest.library.util.PreferenceUtil
import com.google.android.gms.common.ConnectionResult
import com.google.android.gms.common.GoogleApiAvailability
import com.google.android.gms.maps.CameraUpdateFactory
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.GoogleMap.*
import com.google.android.gms.maps.GoogleMap.OnCameraChangeListener
import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener
import com.google.android.gms.maps.GoogleMap.OnMyLocationButtonClickListener
import com.google.android.gms.maps.LocationSource
import com.google.android.gms.maps.LocationSource.OnLocationChangedListener
import com.google.android.gms.maps.SupportMapFragment
import com.google.android.gms.maps.model.*
import com.google.android.gms.maps.model.CameraPosition
import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.MapStyleOptions
import com.google.android.gms.maps.model.Marker
import com.google.android.gms.maps.model.MarkerOptions
import com.google.android.gms.maps.model.Polyline
import com.google.android.gms.maps.model.PolylineOptions
import com.google.maps.android.SphericalUtil
import com.google.maps.android.ktx.awaitMap
import dagger.hilt.android.AndroidEntryPoint

View File

@@ -50,7 +50,12 @@ import com.android.gpstest.library.data.LocationRepository
import com.android.gpstest.library.model.SatelliteGroup
import com.android.gpstest.library.model.SatelliteMetadata
import com.android.gpstest.library.util.FormatUtils.toNotificationTitle
import com.android.gpstest.library.util.IOUtils.*
import com.android.gpstest.library.util.IOUtils.deleteOldFiles
import com.android.gpstest.library.util.IOUtils.forcePsdsInjection
import com.android.gpstest.library.util.IOUtils.forceTimeInjection
import com.android.gpstest.library.util.IOUtils.writeMeasurementToLogcat
import com.android.gpstest.library.util.IOUtils.writeNavMessageToAndroidStudio
import com.android.gpstest.library.util.IOUtils.writeNmeaToAndroidStudio
import com.android.gpstest.library.util.LibUIUtils.toNotificationSummary
import com.android.gpstest.library.util.PreferenceUtil
import com.android.gpstest.library.util.PreferenceUtil.isCsvLoggingEnabled
@@ -73,13 +78,18 @@ import com.android.gpstest.library.util.SatelliteUtil.toSatelliteStatus
import com.android.gpstest.library.util.SatelliteUtils
import com.android.gpstest.ui.MainActivity
import dagger.hilt.android.AndroidEntryPoint
import java.io.File
import java.util.*
import javax.inject.Inject
import kotlinx.coroutines.*
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
import java.io.File
import java.util.Date
import javax.inject.Inject
/**
* Service tracks location, logs to files, and shows a notification to the user.

View File

@@ -10,9 +10,12 @@ import android.provider.MediaStore;
import android.provider.MediaStore.Downloads;
import android.util.Log;
import android.widget.Toast;
import androidx.annotation.RequiresApi;
import com.android.gpstest.Application;
import com.android.gpstest.R;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;

View File

@@ -49,9 +49,9 @@ import com.android.gpstest.chart.DistanceValueFormatter;
import com.android.gpstest.library.model.AvgError;
import com.android.gpstest.library.model.MeasuredError;
import com.android.gpstest.library.util.IOUtils;
import com.android.gpstest.library.util.LibUIUtils;
import com.android.gpstest.library.util.MathUtils;
import com.android.gpstest.library.util.PreferenceUtils;
import com.android.gpstest.library.util.LibUIUtils;
import com.android.gpstest.util.UIUtils;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Legend;

View File

@@ -18,8 +18,8 @@ import com.android.gpstest.Application.Companion.prefs
import com.android.gpstest.R
import com.android.gpstest.library.model.CoordinateType
import com.android.gpstest.library.util.IOUtils
import com.android.gpstest.library.util.PreferenceUtils
import com.android.gpstest.library.util.LibUIUtils
import com.android.gpstest.library.util.PreferenceUtils
import com.google.android.material.button.MaterialButton
import com.google.android.material.chip.Chip
import com.google.android.material.chip.ChipGroup

View File

@@ -2,7 +2,6 @@ package com.android.gpstest.ui.share
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@@ -17,7 +16,6 @@ import com.android.gpstest.library.util.LibUIUtils
import com.google.android.material.button.MaterialButton
import java.io.File
import java.util.*
import kotlin.collections.ArrayList
class ShareLogFragment : Fragment() {

View File

@@ -44,23 +44,23 @@ import com.android.gpstest.Application
import com.android.gpstest.Application.Companion.app
import com.android.gpstest.Application.Companion.prefs
import com.android.gpstest.R
import com.android.gpstest.library.data.FixState
import com.android.gpstest.library.data.LocationRepository
import com.android.gpstest.databinding.GpsSkyBinding
import com.android.gpstest.databinding.GpsSkyLegendCardBinding
import com.android.gpstest.databinding.GpsSkySignalMeterBinding
import com.android.gpstest.library.data.FixState
import com.android.gpstest.library.data.LocationRepository
import com.android.gpstest.library.model.SatelliteMetadata
import com.android.gpstest.library.model.SatelliteStatus
import com.android.gpstest.library.ui.SignalInfoViewModel
import com.android.gpstest.ui.status.Filter
import com.android.gpstest.ui.theme.AppTheme
import com.android.gpstest.library.util.LibUIUtils
import com.android.gpstest.library.util.MathUtils
import com.android.gpstest.library.util.PreferenceUtil
import com.android.gpstest.library.util.PreferenceUtil.darkTheme
import com.android.gpstest.library.util.PreferenceUtils
import com.android.gpstest.library.util.PreferenceUtils.clearGnssFilter
import com.android.gpstest.library.util.PreferenceUtils.gnssFilter
import com.android.gpstest.library.util.LibUIUtils
import com.android.gpstest.ui.status.Filter
import com.android.gpstest.ui.theme.AppTheme
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job

View File

@@ -23,15 +23,36 @@ import android.text.TextUtils
import android.text.format.DateFormat
import android.widget.Toast
import androidx.annotation.StringRes
import androidx.compose.animation.*
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.animation.expandVertically
import androidx.compose.animation.scaleIn
import androidx.compose.animation.scaleOut
import androidx.compose.animation.shrinkVertically
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.material.AlertDialog
import androidx.compose.material.Card
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
@@ -56,11 +77,10 @@ import com.android.gpstest.library.data.FixState
import com.android.gpstest.library.model.CoordinateType
import com.android.gpstest.library.model.DilutionOfPrecision
import com.android.gpstest.library.model.SatelliteMetadata
import com.android.gpstest.library.util.*
import com.android.gpstest.library.util.DateTimeUtils
import com.android.gpstest.library.util.FormatUtils.formatAccuracy
import com.android.gpstest.library.util.FormatUtils.formatAltitude
import com.android.gpstest.library.util.FormatUtils.formatAltitudeMsl
import com.android.gpstest.ui.components.LinkifyText
import com.android.gpstest.library.util.FormatUtils.formatBearing
import com.android.gpstest.library.util.FormatUtils.formatBearingAccuracy
import com.android.gpstest.library.util.FormatUtils.formatDoP
@@ -69,10 +89,14 @@ import com.android.gpstest.library.util.FormatUtils.formatLatOrLon
import com.android.gpstest.library.util.FormatUtils.formatNumSats
import com.android.gpstest.library.util.FormatUtils.formatSpeed
import com.android.gpstest.library.util.FormatUtils.formatSpeedAccuracy
import com.android.gpstest.library.util.IOUtils
import com.android.gpstest.library.util.LibUIUtils
import com.android.gpstest.library.util.PreferenceUtil.coordinateFormat
import com.android.gpstest.library.util.PreferenceUtil.shareIncludeAltitude
import com.android.gpstest.library.util.PreferenceUtils
import com.android.gpstest.library.util.PreferenceUtils.gnssFilter
import com.android.gpstest.library.util.SatelliteUtil.isVerticalAccuracySupported
import com.android.gpstest.ui.components.LinkifyText
import java.text.SimpleDateFormat
@Preview

View File

@@ -17,7 +17,12 @@
package com.android.gpstest.ui.status
import android.os.Bundle
import android.view.*
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.platform.ViewCompositionStrategy
import androidx.fragment.app.Fragment
@@ -26,8 +31,8 @@ import com.android.gpstest.Application.Companion.app
import com.android.gpstest.Application.Companion.prefs
import com.android.gpstest.R
import com.android.gpstest.library.ui.SignalInfoViewModel
import com.android.gpstest.ui.theme.AppTheme
import com.android.gpstest.library.util.PreferenceUtil.darkTheme
import com.android.gpstest.ui.theme.AppTheme
import com.android.gpstest.util.UIUtils.showSortByDialog
import dagger.hilt.android.AndroidEntryPoint

View File

@@ -18,8 +18,23 @@ package com.android.gpstest.ui.status
import android.location.Location
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.Image
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable
import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.defaultMinSize
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.Card
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
@@ -45,7 +60,11 @@ import com.android.gpstest.Application.Companion.app
import com.android.gpstest.Application.Companion.prefs
import com.android.gpstest.R
import com.android.gpstest.library.data.FixState
import com.android.gpstest.library.model.*
import com.android.gpstest.library.model.DilutionOfPrecision
import com.android.gpstest.library.model.GnssType
import com.android.gpstest.library.model.SatelliteMetadata
import com.android.gpstest.library.model.SatelliteStatus
import com.android.gpstest.library.model.SbasType
import com.android.gpstest.library.ui.SignalInfoViewModel
import com.android.gpstest.library.util.CarrierFreqUtils
import com.android.gpstest.library.util.MathUtils

View File

@@ -26,10 +26,10 @@ import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ScrollView;
import com.android.gpstest.R;
import androidx.core.view.ViewCompat;
import com.android.gpstest.R;
/**
* A layout that draws something in the insets passed to {@link #fitSystemWindows(android.graphics.Rect)},
* i.e. the area above UI chrome

View File

@@ -15,14 +15,14 @@
*/
package com.android.gpstest.util;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNull;
import com.android.gpstest.library.model.DilutionOfPrecision;
import com.android.gpstest.library.util.NmeaUtils;
import org.junit.Test;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNull;
public class NmeaUtilsTest {
/**
* Test getting altitude above mean sea level (geoid) from NMEA sentences

View File

@@ -4,17 +4,18 @@ buildscript {
compose_version = '1.2.0-alpha05'
wear_compose_version = '1.0.2'
}
ext.kotlin_version = '1.8.0'
ext.hilt_version = '2.45'
ext.kotlin_version = '2.1.0'
ext.hilt_version = '2.56.2'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.7.2'
classpath 'com.android.tools.build:gradle:8.11.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// Hilt for dependency injection
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
classpath 'org.jetbrains.kotlin:compose-compiler-gradle-plugin:2.1.0'
}
}

View File

@@ -5,6 +5,5 @@ org.gradle.caching=false
org.gradle.jvmargs=-Xmx3g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC
android.enableJetifier=true
android.useAndroidX=true
android.defaults.buildfeatures.buildconfig=true
android.nonTransitiveRClass=false
android.nonFinalResIds=false

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME

View File

@@ -1,13 +1,11 @@
package com.android.library
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.Assert.*
/**
* Instrumented test, which will execute on an Android device.
*

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<manifest>
</manifest>

View File

@@ -36,7 +36,6 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.callbackFlow
import kotlinx.coroutines.flow.shareIn
import java.util.*
private const val TAG = "SharedAntennaManager"

View File

@@ -36,7 +36,12 @@ import com.android.gpstest.library.util.hasPermission
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.callbackFlow
import kotlinx.coroutines.flow.shareIn
private const val TAG = "SharedGnssMeasurementManager"

View File

@@ -33,7 +33,12 @@ import com.android.gpstest.library.util.hasPermission
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.callbackFlow
import kotlinx.coroutines.flow.shareIn
import java.util.concurrent.TimeUnit
private const val TAG = "SharedGnssStatusManager"

View File

@@ -29,7 +29,12 @@ import com.android.gpstest.library.util.hasPermission
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.callbackFlow
import kotlinx.coroutines.flow.shareIn
private const val TAG = "SharedLocationManager"

View File

@@ -19,7 +19,11 @@ import android.Manifest
import android.annotation.SuppressLint
import android.content.Context
import android.content.SharedPreferences
import android.hardware.*
import android.hardware.GeomagneticField
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
import android.hardware.display.DisplayManager
import android.location.LocationManager
import android.util.Log

View File

@@ -3,7 +3,13 @@ package com.android.gpstest.library.di
import android.content.Context
import android.content.SharedPreferences
import android.preference.PreferenceManager
import com.android.gpstest.library.data.*
import com.android.gpstest.library.data.SharedAntennaManager
import com.android.gpstest.library.data.SharedGnssMeasurementManager
import com.android.gpstest.library.data.SharedGnssStatusManager
import com.android.gpstest.library.data.SharedLocationManager
import com.android.gpstest.library.data.SharedNavMessageManager
import com.android.gpstest.library.data.SharedNmeaManager
import com.android.gpstest.library.data.SharedSensorManager
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn

View File

@@ -28,7 +28,13 @@ import androidx.lifecycle.viewModelScope
import com.android.gpstest.library.data.FirstFixState
import com.android.gpstest.library.data.FixState
import com.android.gpstest.library.data.LocationRepository
import com.android.gpstest.library.model.*
import com.android.gpstest.library.model.DilutionOfPrecision
import com.android.gpstest.library.model.GnssType
import com.android.gpstest.library.model.Satellite
import com.android.gpstest.library.model.SatelliteGroup
import com.android.gpstest.library.model.SatelliteMetadata
import com.android.gpstest.library.model.SatelliteStatus
import com.android.gpstest.library.model.SbasType
import com.android.gpstest.library.util.CarrierFreqUtils.getCarrierFrequencyLabel
import com.android.gpstest.library.util.FormatUtils.formatTtff
import com.android.gpstest.library.util.NmeaUtils

View File

@@ -9,7 +9,12 @@ import android.location.Location
import android.os.Build
import androidx.annotation.RequiresApi
import com.android.gpstest.library.R
import com.android.gpstest.library.model.*
import com.android.gpstest.library.model.CoordinateType
import com.android.gpstest.library.model.DilutionOfPrecision
import com.android.gpstest.library.model.Orientation
import com.android.gpstest.library.model.SatelliteGroup
import com.android.gpstest.library.model.SatelliteMetadata
import com.android.gpstest.library.model.SatelliteStatus
import com.android.gpstest.library.util.SatelliteUtil.isBearingAccuracySupported
import com.android.gpstest.library.util.SatelliteUtil.isSpeedAccuracySupported
import com.android.gpstest.library.util.SatelliteUtil.isVerticalAccuracySupported

View File

@@ -21,6 +21,7 @@ import android.annotation.TargetApi;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import com.android.gpstest.library.R;
import com.android.gpstest.library.model.GnssType;

View File

@@ -19,8 +19,16 @@ import android.annotation.SuppressLint
import android.location.GnssStatus
import android.location.Location
import android.os.Build
import com.android.gpstest.library.model.*
import com.android.gpstest.library.util.CarrierFreqUtils.*
import com.android.gpstest.library.model.GnssType
import com.android.gpstest.library.model.Satellite
import com.android.gpstest.library.model.SatelliteGroup
import com.android.gpstest.library.model.SatelliteMetadata
import com.android.gpstest.library.model.SatelliteStatus
import com.android.gpstest.library.model.SbasType
import com.android.gpstest.library.util.CarrierFreqUtils.CF_UNKNOWN
import com.android.gpstest.library.util.CarrierFreqUtils.CF_UNSUPPORTED
import com.android.gpstest.library.util.CarrierFreqUtils.getCarrierFrequencyLabel
import com.android.gpstest.library.util.CarrierFreqUtils.isPrimaryCarrier
import com.android.gpstest.library.util.SatelliteUtils.createGnssSatelliteKey
object SatelliteUtil {

View File

@@ -1,9 +1,8 @@
package com.android.library
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.Assert.*
/**
* Example local unit test, which will execute on the development machine (host).
*

View File

@@ -3,6 +3,7 @@ plugins {
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
id 'dagger.hilt.android.plugin'
id 'org.jetbrains.kotlin.plugin.compose'
}
android {

View File

@@ -13,12 +13,15 @@ import androidx.activity.compose.setContent
import androidx.activity.viewModels
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.Image
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.*
import androidx.compose.material.LinearProgressIndicator
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.defaultMinSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@@ -34,13 +37,19 @@ import androidx.core.app.ActivityCompat
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import androidx.wear.compose.material.*
import androidx.wear.compose.material.Text
import com.android.gpstest.Application.Companion.prefs
import com.android.gpstest.library.data.FixState
import com.android.gpstest.library.data.LocationRepository
import com.android.gpstest.library.model.*
import com.android.gpstest.library.model.GnssType
import com.android.gpstest.library.model.SatelliteStatus
import com.android.gpstest.library.model.SbasType
import com.android.gpstest.library.ui.SignalInfoViewModel
import com.android.gpstest.library.util.*
import com.android.gpstest.library.util.CarrierFreqUtils
import com.android.gpstest.library.util.LibUIUtils
import com.android.gpstest.library.util.MathUtils
import com.android.gpstest.library.util.PermissionUtils
import com.android.gpstest.library.util.PreferenceUtil
import com.android.gpstest.library.util.PreferenceUtils
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job

View File

@@ -23,7 +23,14 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.rotary.onRotaryScrollEvent
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.wear.compose.material.*
import androidx.wear.compose.material.AutoCenteringParams
import androidx.wear.compose.material.PositionIndicator
import androidx.wear.compose.material.Scaffold
import androidx.wear.compose.material.ScalingLazyColumn
import androidx.wear.compose.material.Text
import androidx.wear.compose.material.TimeSource
import androidx.wear.compose.material.TimeText
import androidx.wear.compose.material.rememberScalingLazyListState
import com.android.gpstest.Application
import com.android.gpstest.library.data.FixState
import com.android.gpstest.library.model.CoordinateType