diff --git a/.idea/other.xml b/.idea/other.xml index 4604c44..49481ad 100644 --- a/.idea/other.xml +++ b/.idea/other.xml @@ -25,6 +25,17 @@ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b4af94d..9c3a5c9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,6 +45,17 @@ android:enabled="true" android:exported="false" android:foregroundServiceType="location" /> + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/lilstiffy/mockgps/service/MockLocationService.kt b/app/src/main/java/com/lilstiffy/mockgps/service/MockLocationService.kt index 6221314..9b30412 100644 --- a/app/src/main/java/com/lilstiffy/mockgps/service/MockLocationService.kt +++ b/app/src/main/java/com/lilstiffy/mockgps/service/MockLocationService.kt @@ -30,7 +30,12 @@ class MockLocationService : Service() { var isMocking = false private set - lateinit var latLng: LatLng + var latLng: LatLng = LatLng(0.0, 0.0) + get() = StorageManager.getLatestLocation() + set(value) { + StorageManager.addLocationToHistory(value) + field = value + } private val locationManager by lazy { getSystemService(Context.LOCATION_SERVICE) as LocationManager diff --git a/app/src/main/java/com/lilstiffy/mockgps/service/MockerTileService.kt b/app/src/main/java/com/lilstiffy/mockgps/service/MockerTileService.kt new file mode 100644 index 0000000..db198d9 --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/service/MockerTileService.kt @@ -0,0 +1,32 @@ +package com.lilstiffy.mockgps.service + +import android.service.quicksettings.Tile +import android.service.quicksettings.TileService +import com.lilstiffy.mockgps.storage.StorageManager + +/** + * Tile service for mocking location + */ +class MockerTileService : TileService() { + + override fun onCreate() { + super.onCreate() + StorageManager.initialise(this) + } + + override fun onClick() { + super.onClick() + MockLocationService.instance?.let { service -> + service.toggleMocking().also { + if (service.isMocking) { + qsTile.state = Tile.STATE_ACTIVE + qsTile.updateTile() + } else { + qsTile.state = Tile.STATE_INACTIVE + qsTile.updateTile() + } + + } + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_gps_crosshair.xml b/app/src/main/res/drawable/ic_gps_crosshair.xml new file mode 100644 index 0000000..f9e668c --- /dev/null +++ b/app/src/main/res/drawable/ic_gps_crosshair.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dd34d3a..283d7cb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,4 @@ MockGps + Mock latest \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 5873551..3ef1646 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,5 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.application") version "8.1.4" apply false + id("com.android.application") version "8.5.0" apply false id("org.jetbrains.kotlin.android") version "1.8.10" apply false } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 60af28d..4244c7b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue Nov 21 10:19:27 CET 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists