From 99c8ddf426cb005d67be87423823cbe7feef3d6d Mon Sep 17 00:00:00 2001 From: Stefan Smudja Date: Tue, 20 Aug 2024 10:38:16 +0200 Subject: [PATCH] Initial commit --- .github/workflows/android.yml | 26 + .gitignore | 18 + .idea/.gitignore | 3 + .idea/.name | 1 + .idea/compiler.xml | 6 + .idea/deploymentTargetSelector.xml | 10 + .idea/discord.xml | 7 + .idea/gradle.xml | 19 + .idea/inspectionProfiles/Project_Default.xml | 41 ++ .idea/intellij-javadocs-4.0.1.xml | 204 ++++++ .idea/kotlinc.xml | 6 + .idea/migrations.xml | 10 + .idea/misc.xml | 9 + .idea/other.xml | 252 +++++++ .idea/vcs.xml | 6 + LICENSE | 674 ++++++++++++++++++ README.md | 34 + app/.gitignore | 1 + app/build.gradle.kts | 90 +++ app/proguard-rules.pro | 37 + app/release/output-metadata.json | 20 + .../mockgps/ExampleInstrumentedTest.kt | 22 + app/src/main/AndroidManifest.xml | 50 ++ .../com/lilstiffy/mockgps/MainActivity.kt | 107 +++ .../java/com/lilstiffy/mockgps/MockGpsApp.kt | 20 + .../mockgps/extensions/Address+Extensions.kt | 25 + .../mockgps/extensions/LatLng+Extensions.kt | 11 + .../mockgps/extensions/Modifier+Extensions.kt | 16 + .../mockgps/service/LocationHelper.kt | 83 +++ .../mockgps/service/LocationMocker.kt | 107 +++ .../mockgps/service/MockLocationService.kt | 159 +++++ .../mockgps/service/VibratorService.kt | 29 + .../mockgps/storage/StorageManager.kt | 87 +++ .../ui/components/FavoritesListComponent.kt | 81 +++ .../mockgps/ui/components/FooterComponent.kt | 184 +++++ .../mockgps/ui/components/SearchComponent.kt | 99 +++ .../components/listitems/FavoriteListItem.kt | 87 +++ .../mockgps/ui/models/LocationEntry.kt | 8 + .../lilstiffy/mockgps/ui/screens/MapScreen.kt | 209 ++++++ .../ui/screens/viewmodels/MapViewModel.kt | 50 ++ .../com/lilstiffy/mockgps/ui/theme/Color.kt | 18 + .../lilstiffy/mockgps/ui/theme/FontStyles.kt | 14 + .../com/lilstiffy/mockgps/ui/theme/Theme.kt | 72 ++ .../com/lilstiffy/mockgps/ui/theme/Type.kt | 34 + .../res/drawable/ic_launcher_background.xml | 170 +++++ .../res/drawable/ic_launcher_foreground.xml | 30 + app/src/main/res/drawable/ic_play.xml | 10 + app/src/main/res/drawable/ic_stop.xml | 10 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 7689 bytes .../mipmap-hdpi/ic_launcher_background.png | Bin 0 -> 3826 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 9950 bytes .../mipmap-hdpi/ic_launcher_monochrome.png | Bin 0 -> 3426 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 4375 bytes .../mipmap-mdpi/ic_launcher_background.png | Bin 0 -> 2225 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 5225 bytes .../mipmap-mdpi/ic_launcher_monochrome.png | Bin 0 -> 1504 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 11827 bytes .../mipmap-xhdpi/ic_launcher_background.png | Bin 0 -> 6219 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 12237 bytes .../mipmap-xhdpi/ic_launcher_monochrome.png | Bin 0 -> 4400 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 20991 bytes .../mipmap-xxhdpi/ic_launcher_background.png | Bin 0 -> 14991 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 23858 bytes .../mipmap-xxhdpi/ic_launcher_monochrome.png | Bin 0 -> 9447 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 33123 bytes .../mipmap-xxxhdpi/ic_launcher_background.png | Bin 0 -> 28960 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 31155 bytes .../mipmap-xxxhdpi/ic_launcher_monochrome.png | Bin 0 -> 11734 bytes app/src/main/res/raw/style_json.json | 191 +++++ app/src/main/res/values/colors.xml | 10 + app/src/main/res/values/strings.xml | 3 + app/src/main/res/values/themes.xml | 5 + app/src/main/res/xml/backup_rules.xml | 13 + .../main/res/xml/data_extraction_rules.xml | 19 + .../com/lilstiffy/mockgps/ExampleUnitTest.kt | 16 + build.gradle.kts | 5 + demo_image.png | Bin 0 -> 1019916 bytes demo_image_light.png | Bin 0 -> 1166674 bytes gradle.properties | 23 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 185 +++++ gradlew.bat | 89 +++ settings.gradle.kts | 18 + 84 files changed, 3849 insertions(+) create mode 100644 .github/workflows/android.yml create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/.name create mode 100644 .idea/compiler.xml create mode 100644 .idea/deploymentTargetSelector.xml create mode 100644 .idea/discord.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/intellij-javadocs-4.0.1.xml create mode 100644 .idea/kotlinc.xml create mode 100644 .idea/migrations.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/other.xml create mode 100644 .idea/vcs.xml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 app/.gitignore create mode 100644 app/build.gradle.kts create mode 100644 app/proguard-rules.pro create mode 100644 app/release/output-metadata.json create mode 100644 app/src/androidTest/java/com/lilstiffy/mockgps/ExampleInstrumentedTest.kt create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/java/com/lilstiffy/mockgps/MainActivity.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/MockGpsApp.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/extensions/Address+Extensions.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/extensions/LatLng+Extensions.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/extensions/Modifier+Extensions.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/service/LocationHelper.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/service/LocationMocker.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/service/MockLocationService.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/service/VibratorService.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/storage/StorageManager.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/ui/components/FavoritesListComponent.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/ui/components/FooterComponent.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/ui/components/SearchComponent.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/ui/components/listitems/FavoriteListItem.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/ui/models/LocationEntry.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/ui/screens/MapScreen.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/ui/screens/viewmodels/MapViewModel.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/ui/theme/Color.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/ui/theme/FontStyles.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/ui/theme/Theme.kt create mode 100644 app/src/main/java/com/lilstiffy/mockgps/ui/theme/Type.kt create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/ic_play.xml create mode 100644 app/src/main/res/drawable/ic_stop.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_background.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_background.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_background.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png create mode 100644 app/src/main/res/raw/style_json.json create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/themes.xml create mode 100644 app/src/main/res/xml/backup_rules.xml create mode 100644 app/src/main/res/xml/data_extraction_rules.xml create mode 100644 app/src/test/java/com/lilstiffy/mockgps/ExampleUnitTest.kt create mode 100644 build.gradle.kts create mode 100644 demo_image.png create mode 100644 demo_image_light.png create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle.kts diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml new file mode 100644 index 0000000..1ab91fa --- /dev/null +++ b/.github/workflows/android.yml @@ -0,0 +1,26 @@ +name: Android CI + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + - name: Build with Gradle + run: ./gradlew build diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..944d66e --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties +env.properties +keystore +app/release \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..1e1c96f --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +MockGps \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..b589d56 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..b268ef3 --- /dev/null +++ b/.idea/deploymentTargetSelector.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/discord.xml b/.idea/discord.xml new file mode 100644 index 0000000..30bab2a --- /dev/null +++ b/.idea/discord.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..0897082 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..44ca2d9 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,41 @@ + + + + \ No newline at end of file diff --git a/.idea/intellij-javadocs-4.0.1.xml b/.idea/intellij-javadocs-4.0.1.xml new file mode 100644 index 0000000..6f8d359 --- /dev/null +++ b/.idea/intellij-javadocs-4.0.1.xml @@ -0,0 +1,204 @@ + + + + + UPDATE + false + true + + TYPE + FIELD + METHOD + + + PROTECTED + DEFAULT + PUBLIC + + + + + + ^.*(public|protected|private)*.+interface\s+\w+.* + /**\n + * The interface ${name}.\n +<#if element.typeParameters?has_content> * \n +</#if> +<#list element.typeParameters as typeParameter> + * @param <${typeParameter.name}> the type parameter\n +</#list> + */ + + + ^.*(public|protected|private)*.+enum\s+\w+.* + /**\n + * The enum ${name}.\n + */ + + + ^.*(public|protected|private)*.+class\s+\w+.* + /**\n + * The type ${name}.\n +<#if element.typeParameters?has_content> * \n +</#if> +<#list element.typeParameters as typeParameter> + * @param <${typeParameter.name}> the type parameter\n +</#list> + */ + + + .+ + /**\n + * The type ${name}.\n + */ + + + + + .+ + /**\n + * Instantiates a new ${name}.\n +<#if element.parameterList.parameters?has_content> + *\n +</#if> +<#list element.parameterList.parameters as parameter> + * @param ${parameter.name} the ${paramNames[parameter.name]}\n +</#list> +<#if element.throwsList.referenceElements?has_content> + *\n +</#if> +<#list element.throwsList.referenceElements as exception> + * @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n +</#list> + */ + + + + + ^.*(public|protected|private)*\s*.*(\w(\s*<.+>)*)+\s+get\w+\s*\(.*\).+ + /**\n + * Gets ${partName}.\n +<#if element.typeParameters?has_content> * \n +</#if> +<#list element.typeParameters as typeParameter> + * @param <${typeParameter.name}> the type parameter\n +</#list> +<#if element.parameterList.parameters?has_content> + *\n +</#if> +<#list element.parameterList.parameters as parameter> + * @param ${parameter.name} the ${paramNames[parameter.name]}\n +</#list> +<#if isNotVoid> + *\n + * @return the ${partName}\n +</#if> +<#if element.throwsList.referenceElements?has_content> + *\n +</#if> +<#list element.throwsList.referenceElements as exception> + * @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n +</#list> + */ + + + ^.*(public|protected|private)*\s*.*(void|\w(\s*<.+>)*)+\s+set\w+\s*\(.*\).+ + /**\n + * Sets ${partName}.\n +<#if element.typeParameters?has_content> * \n +</#if> +<#list element.typeParameters as typeParameter> + * @param <${typeParameter.name}> the type parameter\n +</#list> +<#if element.parameterList.parameters?has_content> + *\n +</#if> +<#list element.parameterList.parameters as parameter> + * @param ${parameter.name} the ${paramNames[parameter.name]}\n +</#list> +<#if isNotVoid> + *\n + * @return the ${partName}\n +</#if> +<#if element.throwsList.referenceElements?has_content> + *\n +</#if> +<#list element.throwsList.referenceElements as exception> + * @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n +</#list> + */ + + + ^.*((public\s+static)|(static\s+public))\s+void\s+main\s*\(\s*String\s*(\[\s*\]|\.\.\.)\s+\w+\s*\).+ + /**\n + * The entry point of application.\n + + <#if element.parameterList.parameters?has_content> + *\n +</#if> + * @param ${element.parameterList.parameters[0].name} the input arguments\n +<#if element.throwsList.referenceElements?has_content> + *\n +</#if> +<#list element.throwsList.referenceElements as exception> + * @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n +</#list> + */ + + + .+ + /**\n + * ${name}<#if isNotVoid> ${return}</#if>.\n +<#if element.typeParameters?has_content> * \n +</#if> +<#list element.typeParameters as typeParameter> + * @param <${typeParameter.name}> the type parameter\n +</#list> +<#if element.parameterList.parameters?has_content> + *\n +</#if> +<#list element.parameterList.parameters as parameter> + * @param ${parameter.name} the ${paramNames[parameter.name]}\n +</#list> +<#if isNotVoid> + *\n + * @return the ${return}\n +</#if> +<#if element.throwsList.referenceElements?has_content> + *\n +</#if> +<#list element.throwsList.referenceElements as exception> + * @throws ${exception.referenceName} the ${exceptionNames[exception.referenceName]}\n +</#list> + */ + + + + + ^.*(public|protected|private)*.+static.*(\w\s\w)+.+ + /**\n + * The constant ${element.getName()}.\n + */ + + + ^.*(public|protected|private)*.*(\w\s\w)+.+ + /**\n + <#if element.parent.isInterface()> + * The constant ${element.getName()}.\n +<#else> + * The ${name}.\n +</#if> */ + + + .+ + /**\n + <#if element.parent.isEnum()> + *${name} ${typeName}.\n +<#else> + * The ${name}.\n +</#if>*/ + + + + + \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml new file mode 100644 index 0000000..0fc3113 --- /dev/null +++ b/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..8978d23 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/other.xml b/.idea/other.xml new file mode 100644 index 0000000..4604c44 --- /dev/null +++ b/.idea/other.xml @@ -0,0 +1,252 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..455f617 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + MockGps is a free to use app to mock your location for testing purposes, completely ad free. + Copyright (C) 2023 Stefan Smudja + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + MockGps Copyright (C) 2023 Stefan Smudja + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..9ad5697 --- /dev/null +++ b/README.md @@ -0,0 +1,34 @@ +# MockGPS App for Android + +### All support is greatly appreciated +https://buymeacoffee.com/lilstiffy + +### Feel free to request features in order to make the app even better! + +## Overview + +This Android app allows users to mock their device's location, providing a convenient way to simulate different geographic locations. It can be useful for testing location-based features in various applications or for other scenarios where mock location data is required. + +## Features + +- **Mock Location:** Set a custom latitude and longitude to simulate the device's location. +- **Real-Time Updates:** Update the mock location in real-time for dynamic testing scenarios. +- **Permissions:** Ensure that the app has the necessary location-related permissions to function correctly. +- **Easy-to-Use Interface:** Simple user interface. + +## Getting Started + +### Prerequisites + +- Developer mode and the MockGPS selected as selected Mock Location app. +- Android Studio for building and running the app (optional). + +### Installation + +1. Clone the repository or download the APK file. + ```bash + git clone https://github.com/lilstiffy/mock-location-app.git + +### Screenshots (Dark / Light) + + diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..f1a8288 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,90 @@ +import java.io.FileInputStream +import java.util.Properties + +plugins { + id("com.android.application") + id("org.jetbrains.kotlin.android") +} + +var props = Properties() +var propsFile = rootProject.file("env.properties") +if (propsFile.exists()) { + props.load(FileInputStream(propsFile)) +} + +android { + namespace = "com.lilstiffy.mockgps" + compileSdk = 34 + + defaultConfig { + applicationId = "com.lilstiffy.mockgps" + minSdk = 28 + targetSdk = 34 + versionCode = 5 + versionName = "1.0.4" + + manifestPlaceholders["API_KEY"] = props.getProperty("MAPS_API_KEY") + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + vectorDrawables { + useSupportLibrary = true + } + } + + buildTypes { + release { + isMinifyEnabled = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = "1.8" + } + buildFeatures { + compose = true + } + composeOptions { + kotlinCompilerExtensionVersion = "1.4.3" + } + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } + } +} + +dependencies { + + implementation("androidx.core:core-ktx:1.9.0") + implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") + implementation("androidx.activity:activity-compose:1.8.1") + implementation(platform("androidx.compose:compose-bom:2023.10.01")) + implementation("androidx.compose.ui:ui") + implementation("androidx.compose.ui:ui-graphics") + implementation("androidx.compose.ui:ui-tooling-preview") + implementation("androidx.compose.material3:material3") + testImplementation("junit:junit:4.13.2") + androidTestImplementation("androidx.test.ext:junit:1.1.5") + androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") + androidTestImplementation(platform("androidx.compose:compose-bom:2023.10.01")) + androidTestImplementation("androidx.compose.ui:ui-test-junit4") + debugImplementation("androidx.compose.ui:ui-tooling") + debugImplementation("androidx.compose.ui:ui-test-manifest") + + // Google maps for Compose + implementation("com.google.maps.android:maps-compose:4.3.0") + + // Viewmodel + implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2") + + //Gson + implementation("com.google.code.gson:gson:2.10.1") + +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..230913b --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,37 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile + +# Gson uses generic type information stored in a class file when working with +# fields. Proguard removes such information by default, keep it. +-keepattributes Signature + +# This is also needed for R8 in compat mode since multiple +# optimizations will remove the generic signature such as class +# merging and argument removal. See: +# https://r8.googlesource.com/r8/+/refs/heads/main/compatibility-faq.md#troubleshooting-gson-gson +-keep class com.google.gson.reflect.TypeToken { *; } +-keep class * extends com.google.gson.reflect.TypeToken + +# Optional. For using GSON @Expose annotation +-keepattributes AnnotationDefault,RuntimeVisibleAnnotations + +-keep class com.lilstiffy.mockgps.ui.models.** { *; } diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json new file mode 100644 index 0000000..13fd56a --- /dev/null +++ b/app/release/output-metadata.json @@ -0,0 +1,20 @@ +{ + "version": 3, + "artifactType": { + "type": "APK", + "kind": "Directory" + }, + "applicationId": "com.lilstiffy.mockgps", + "variantName": "release", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 5, + "versionName": "1.0.4", + "outputFile": "app-release.apk" + } + ], + "elementType": "File" +} \ No newline at end of file diff --git a/app/src/androidTest/java/com/lilstiffy/mockgps/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/lilstiffy/mockgps/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..cb1d731 --- /dev/null +++ b/app/src/androidTest/java/com/lilstiffy/mockgps/ExampleInstrumentedTest.kt @@ -0,0 +1,22 @@ +package com.lilstiffy.mockgps + +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 + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.lilstiffy.mockgps", appContext.packageName) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..b4af94d --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/lilstiffy/mockgps/MainActivity.kt b/app/src/main/java/com/lilstiffy/mockgps/MainActivity.kt new file mode 100644 index 0000000..30e73f0 --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/MainActivity.kt @@ -0,0 +1,107 @@ +package com.lilstiffy.mockgps + +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import android.content.ServiceConnection +import android.os.Bundle +import android.os.IBinder +import android.widget.Toast +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.core.view.WindowCompat +import com.lilstiffy.mockgps.service.LocationHelper +import com.lilstiffy.mockgps.service.MockLocationService +import com.lilstiffy.mockgps.service.VibratorService +import com.lilstiffy.mockgps.ui.screens.MapScreen +import com.lilstiffy.mockgps.ui.theme.MockGpsTheme + +class MainActivity : ComponentActivity() { + private var mockLocationService: MockLocationService? = null + private set(value) { + field = value + MockLocationService.instance = value + } + + private var isBound = false + + private val connection = object : ServiceConnection { + override fun onServiceConnected(className: ComponentName, service: IBinder) { + val binder = service as MockLocationService.MockLocationBinder + mockLocationService = binder.getService() + isBound = true + } + + override fun onServiceDisconnected(className: ComponentName) { + isBound = false + } + } + + fun toggleMocking(): Boolean { + if (isBound && LocationHelper.hasPermission(this)) { + mockLocationService?.toggleMocking() + if (mockLocationService?.isMocking == true) { + Toast.makeText(this, "Mocking location...", Toast.LENGTH_SHORT).show() + VibratorService.vibrate() + return true + } else if (mockLocationService?.isMocking == false) { + Toast.makeText(this, "Stopped mocking location...", Toast.LENGTH_SHORT).show() + VibratorService.vibrate() + return false + } + } else if (!isBound && LocationHelper.hasPermission(this)) + Toast.makeText(this, "Service not bound", Toast.LENGTH_SHORT).show() + else + Toast.makeText(this, "No Location permission", Toast.LENGTH_SHORT).show() + + return false + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + WindowCompat.setDecorFitsSystemWindows(window, false) + + setContent { + MockGpsTheme { + // A surface container using the 'background' color from the theme + Surface( + modifier = Modifier + .fillMaxSize(), + color = MaterialTheme.colorScheme.background + ) { + MapScreen(activity = this) + } + } + } + + // Start the service + val serviceIntent = Intent(this, MockLocationService::class.java) + startService(serviceIntent) + + // Bind to the service + bindService(serviceIntent, connection, Context.BIND_AUTO_CREATE) + } + + override fun onDestroy() { + super.onDestroy() + + // Unbind from the service + if (isBound) { + unbindService(connection) + isBound = false + } + } +} + +@Preview(showBackground = true) +@Composable +fun GreetingPreview() { + MockGpsTheme { + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lilstiffy/mockgps/MockGpsApp.kt b/app/src/main/java/com/lilstiffy/mockgps/MockGpsApp.kt new file mode 100644 index 0000000..5b78c10 --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/MockGpsApp.kt @@ -0,0 +1,20 @@ +package com.lilstiffy.mockgps + +import android.app.Application +import com.lilstiffy.mockgps.service.VibratorService +import com.lilstiffy.mockgps.storage.StorageManager + +class MockGpsApp : Application() { + companion object { + lateinit var shared: MockGpsApp + private set + } + + override fun onCreate() { + super.onCreate() + shared = this + StorageManager.initialise(this) + VibratorService.initialise(this) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/lilstiffy/mockgps/extensions/Address+Extensions.kt b/app/src/main/java/com/lilstiffy/mockgps/extensions/Address+Extensions.kt new file mode 100644 index 0000000..5bace7f --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/extensions/Address+Extensions.kt @@ -0,0 +1,25 @@ +package com.lilstiffy.mockgps.extensions + +import android.location.Address + +fun Address.displayString(): String { + val addressLines = mutableListOf() + + // Concatenate lines of the address + for (i in 0..maxAddressLineIndex) { + addressLines.add(getAddressLine(i) ?: "") + } + + // Concatenate other details + val otherDetails = mutableListOf().apply { + locality?.let { add(it) } + adminArea?.let { add(it) } + countryName?.let { add(it) } + postalCode?.let { add(it) } + } + + // Combine address lines and other details + val result = addressLines.first().ifEmpty { otherDetails.joinToString(", ") } + + return result.ifEmpty { "No address available" } +} \ No newline at end of file diff --git a/app/src/main/java/com/lilstiffy/mockgps/extensions/LatLng+Extensions.kt b/app/src/main/java/com/lilstiffy/mockgps/extensions/LatLng+Extensions.kt new file mode 100644 index 0000000..b562f7d --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/extensions/LatLng+Extensions.kt @@ -0,0 +1,11 @@ +package com.lilstiffy.mockgps.extensions + +import com.google.android.gms.maps.model.LatLng + +fun LatLng.equalTo(other: LatLng): Boolean { + return (latitude == other.latitude && longitude == other.longitude) +} + +fun LatLng.prettyPrint(): String { + return "Lat: ${this.latitude}\nLng: ${this.longitude}" +} \ No newline at end of file diff --git a/app/src/main/java/com/lilstiffy/mockgps/extensions/Modifier+Extensions.kt b/app/src/main/java/com/lilstiffy/mockgps/extensions/Modifier+Extensions.kt new file mode 100644 index 0000000..b9cecee --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/extensions/Modifier+Extensions.kt @@ -0,0 +1,16 @@ +package com.lilstiffy.mockgps.extensions + +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp + +fun Modifier.roundedShadow(radius: Dp): Modifier { + return this + .shadow( + elevation = 4.dp, + shape = RoundedCornerShape(radius), + clip = true + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/lilstiffy/mockgps/service/LocationHelper.kt b/app/src/main/java/com/lilstiffy/mockgps/service/LocationHelper.kt new file mode 100644 index 0000000..418202a --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/service/LocationHelper.kt @@ -0,0 +1,83 @@ +package com.lilstiffy.mockgps.service + +import android.Manifest.permission.ACCESS_COARSE_LOCATION +import android.Manifest.permission.ACCESS_FINE_LOCATION +import android.content.pm.PackageManager +import android.location.Address +import android.location.Geocoder +import android.os.Build +import androidx.activity.ComponentActivity +import androidx.core.content.ContextCompat +import com.google.android.gms.maps.model.LatLng +import com.lilstiffy.mockgps.MockGpsApp + + +object LocationHelper { + private const val REQUEST_CODE = 69 + val DEFAULT_LOCATION = LatLng(40.712776, -74.005974) + + fun requestPermissions(activity: ComponentActivity) { + activity.requestPermissions( + arrayOf( + ACCESS_FINE_LOCATION, + ACCESS_COARSE_LOCATION + ), REQUEST_CODE + ) + } + + fun hasPermission(activity: ComponentActivity): Boolean { + return ContextCompat.checkSelfPermission( + activity, + ACCESS_FINE_LOCATION + ) == PackageManager.PERMISSION_GRANTED + } + + // Geocoding + fun reverseGeocoding(latLng: LatLng, result: (Address?) -> Unit) { + val geocoder = Geocoder(MockGpsApp.shared.applicationContext) + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + geocoder.getFromLocation(latLng.latitude, latLng.longitude, 1) { response -> + val address = response.firstOrNull() + result(address) + } + } else { + val response = geocoder.getFromLocation(latLng.latitude, latLng.longitude, 1) + val address = response?.firstOrNull() + result(address) + } + } + + /** + * @param searchterm Search term the user wants to do a coordinate look up for + * @param result lambda containing [LatLng] object if a result was found from the Geocoding lookup. + */ + fun geocoding(searchterm: String, result: (LatLng?) -> Unit) { + val geocoder = Geocoder(MockGpsApp.shared.applicationContext) + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + geocoder.getFromLocationName( + searchterm, + 1 + ) { response -> + val address = response.firstOrNull() + if (address == null) { + result(null) + return@getFromLocationName + } + + result(LatLng(address.latitude, address.longitude)) + } + } else { + val response = geocoder.getFromLocationName(searchterm, 1) + val address = response?.firstOrNull() + + if (address == null) { + result(null) + return + } + + result(LatLng(address.latitude, address.longitude)) + } + } +} diff --git a/app/src/main/java/com/lilstiffy/mockgps/service/LocationMocker.kt b/app/src/main/java/com/lilstiffy/mockgps/service/LocationMocker.kt new file mode 100644 index 0000000..c20c18b --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/service/LocationMocker.kt @@ -0,0 +1,107 @@ +package com.lilstiffy.mockgps.service + +import android.annotation.SuppressLint +import android.content.Context +import android.location.Location +import android.location.LocationListener +import android.location.LocationManager +import android.location.provider.ProviderProperties +import android.util.Log +import com.google.android.gms.maps.model.LatLng +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch +import java.util.Date + +class LocationMocker(context: Context) { + private val locationManager by lazy { + context.getSystemService(Context.LOCATION_SERVICE) as LocationManager + } + + private var isMocking = false + lateinit var latLng: LatLng + var listener: LocationListener? = null + + fun toggleMocking() { + if (isMocking) + stopMockingLocation() + else + startMockingLocation() + } + + @SuppressLint("MissingPermission") + private fun startMockingLocation() { + //Permission already checked before hand. + listener?.let { + locationManager.requestLocationUpdates( + LocationManager.GPS_PROVIDER, + 50L, + 0f, + it + ) + } + if (!isMocking) { + isMocking = true + GlobalScope.launch(Dispatchers.IO) { + mockLocation() + } + Log.d("LocationMocker", "Mock location started") + } + } + + private fun stopMockingLocation() { + if (isMocking) { + isMocking = false + Log.d("LocationMocker", "Mock location stopped") + } + } + + private fun addTestProvider() { + val providerName = LocationManager.GPS_PROVIDER + val requiresNetwork = true + val requiresSatellite = false + val requiresCell = false + val hasMonetaryCost = false + val supportsAltitude = false + val supportsSpeed = false + val supportsBearing = false + val powerRequirement = ProviderProperties.POWER_USAGE_HIGH + val accuracy = ProviderProperties.ACCURACY_FINE + + locationManager.addTestProvider( + providerName, + requiresNetwork, + requiresSatellite, + requiresCell, + hasMonetaryCost, + supportsAltitude, + supportsSpeed, + supportsBearing, + powerRequirement, + accuracy + ) + } + + private suspend fun mockLocation() { + while (isMocking) { + val mockLocation = Location(LocationManager.GPS_PROVIDER).apply { + // Set your mock coordinates here + latitude = latLng.latitude + longitude = latLng.longitude + time = Date().time + accuracy = 50f + elapsedRealtimeNanos = System.nanoTime() + } + + addTestProvider() + locationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true) + locationManager.setTestProviderLocation( + LocationManager.GPS_PROVIDER, + mockLocation + ) + + // Sleep for a duration to simulate location update frequency + kotlinx.coroutines.delay(1000) + } + } +} \ 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 new file mode 100644 index 0000000..6221314 --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/service/MockLocationService.kt @@ -0,0 +1,159 @@ +package com.lilstiffy.mockgps.service + +import android.annotation.SuppressLint +import android.app.Service +import android.content.Context +import android.content.Intent +import android.location.Location +import android.location.LocationManager +import android.location.provider.ProviderProperties +import android.os.Binder +import android.os.IBinder +import android.os.SystemClock +import android.util.Log +import android.widget.Toast +import com.google.android.gms.maps.model.LatLng +import com.lilstiffy.mockgps.MockGpsApp +import com.lilstiffy.mockgps.storage.StorageManager +import kotlinx.coroutines.DelicateCoroutinesApi +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch + +class MockLocationService : Service() { + + companion object { + const val TAG = "MockLocationService" + var instance: MockLocationService? = null + } + + var isMocking = false + private set + + lateinit var latLng: LatLng + + private val locationManager by lazy { + getSystemService(Context.LOCATION_SERVICE) as LocationManager + } + + override fun onCreate() { + super.onCreate() + Log.d(TAG, "Service created") + } + + override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + return START_STICKY + } + + override fun onBind(intent: Intent?): IBinder { + return MockLocationBinder() + } + + override fun onDestroy() { + stopMockingLocation() + super.onDestroy() + Log.d(TAG, "Service destroyed") + } + + fun toggleMocking() { + if (isMocking) stopMockingLocation() else startMockingLocation() + } + + @OptIn(DelicateCoroutinesApi::class) + @SuppressLint("MissingPermission") + private fun startMockingLocation() { + // Will be added to location history if not existing. + StorageManager.addLocationToHistory(latLng) + + if (!isMocking) { + isMocking = true + GlobalScope.launch(Dispatchers.IO) { + mockLocation() + } + Log.d(TAG, "Mock location started") + } + } + + private fun stopMockingLocation() { + if (isMocking) { + isMocking = false + Log.d(TAG, "Mock location stopped") + } + } + + private fun addTestProvider(): Boolean { + var successfullyAdded: Boolean + + val providerName = LocationManager.GPS_PROVIDER + val requiresNetwork = true + val requiresSatellite = false + val requiresCell = false + val hasMonetaryCost = false + val supportsAltitude = false + val supportsSpeed = false + val supportsBearing = false + val powerRequirement = ProviderProperties.POWER_USAGE_HIGH + val accuracy = ProviderProperties.ACCURACY_FINE + + try { + locationManager.addTestProvider( + providerName, + requiresNetwork, + requiresSatellite, + requiresCell, + hasMonetaryCost, + supportsAltitude, + supportsSpeed, + supportsBearing, + powerRequirement, + accuracy + ) + successfullyAdded = true + return successfullyAdded + } catch (se: SecurityException) { + val ctx = MockGpsApp.shared.applicationContext + GlobalScope.launch(Dispatchers.Main) { + Toast.makeText( + ctx, + "Mock location failed, you must set this app as your selected mock locations app.", + Toast.LENGTH_SHORT + ).show() + } + successfullyAdded = false + return successfullyAdded + } + } + + private suspend fun mockLocation() { + val providerAdded = addTestProvider() + if (!providerAdded) + return + + locationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true) + + while (isMocking) { + val mockLocation = Location(LocationManager.GPS_PROVIDER).apply { + // Set your mock coordinates here + latitude = latLng.latitude + longitude = latLng.longitude + altitude = 12.5 + time = System.currentTimeMillis() + accuracy = 2f + elapsedRealtimeNanos = SystemClock.elapsedRealtimeNanos() + } + + locationManager.setTestProviderLocation( + LocationManager.GPS_PROVIDER, + mockLocation + ) + // Sleep for a duration to simulate location update frequency + kotlinx.coroutines.delay(200L) + } + } + + inner class MockLocationBinder : Binder() { + fun getService(): MockLocationService { + return this@MockLocationService + } + } +} diff --git a/app/src/main/java/com/lilstiffy/mockgps/service/VibratorService.kt b/app/src/main/java/com/lilstiffy/mockgps/service/VibratorService.kt new file mode 100644 index 0000000..f00bb7d --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/service/VibratorService.kt @@ -0,0 +1,29 @@ +package com.lilstiffy.mockgps.service + +import android.content.Context +import android.os.Build +import android.os.VibrationEffect +import android.os.Vibrator +import android.os.VibratorManager + +object VibratorService { + private var vibrator_s: VibratorManager? = null + private var vibrator: Vibrator? = null + + fun initialise(context: Context) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + vibrator_s = + context.getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager + } else { + vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator + } + } + + fun vibrate() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + vibrator_s?.defaultVibrator?.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_DOUBLE_CLICK)) + } else { + vibrator?.vibrate(300L) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lilstiffy/mockgps/storage/StorageManager.kt b/app/src/main/java/com/lilstiffy/mockgps/storage/StorageManager.kt new file mode 100644 index 0000000..dd1ba50 --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/storage/StorageManager.kt @@ -0,0 +1,87 @@ +package com.lilstiffy.mockgps.storage + +import android.content.Context +import android.content.SharedPreferences +import androidx.core.content.edit +import com.google.android.gms.maps.model.LatLng +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.lilstiffy.mockgps.extensions.equalTo +import com.lilstiffy.mockgps.service.LocationHelper +import com.lilstiffy.mockgps.ui.models.LocationEntry + +object StorageManager { + private const val PREF = "gpsprefs" + private const val KEY_HISTORY = "history" + private const val KEY_FAVORITES = "favorites" + + private lateinit var pref: SharedPreferences + + fun initialise(context: Context) { + pref = context.getSharedPreferences(PREF, Context.MODE_PRIVATE) + } + + fun getLatestLocation(): LatLng { + return locationHistory.lastOrNull() ?: LocationHelper.DEFAULT_LOCATION + } + + fun addLocationToHistory(latLng: LatLng) { + val tempHistory = locationHistory + if (!locationHistory.contains(latLng)) { + tempHistory.add(latLng) + locationHistory = tempHistory + } + } + + fun toggleFavoriteForPosition(locationEntry: LocationEntry) { + if (containsFavoriteEntry(locationEntry)) + removeFavorite(locationEntry) + else + addLocationToFavorites(locationEntry) + } + + private fun addLocationToFavorites(locationEntry: LocationEntry) { + val tempFavorites = favorites + tempFavorites.add(locationEntry) + favorites = tempFavorites + } + + private fun removeFavorite(locationEntry: LocationEntry) { + val tempFavorites = favorites + tempFavorites.removeIf { it.latLng.equalTo(locationEntry.latLng) } + favorites = tempFavorites + } + + fun containsFavoriteEntry(locationEntry: LocationEntry): Boolean { + return favorites.any { it.latLng.equalTo(locationEntry.latLng) } + } + + private var locationHistory: MutableList + get() { + val json = pref.getString(KEY_HISTORY, "[]") + val typeToken = object : TypeToken>() {}.type + return Gson().fromJson(json, typeToken) + } + private set(value) { + val json = Gson().toJson(value) + pref.edit { + putString(KEY_HISTORY, json) + commit() + } + } + + var favorites: MutableList + get() { + val json = pref.getString(KEY_FAVORITES, "[]") + val typeToken = object : TypeToken>() {}.type + return Gson().fromJson(json, typeToken) + } + private set(value) { + val json = Gson().toJson(value) + pref.edit { + putString(KEY_FAVORITES, json) + commit() + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/lilstiffy/mockgps/ui/components/FavoritesListComponent.kt b/app/src/main/java/com/lilstiffy/mockgps/ui/components/FavoritesListComponent.kt new file mode 100644 index 0000000..ecf64fa --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/ui/components/FavoritesListComponent.kt @@ -0,0 +1,81 @@ +package com.lilstiffy.mockgps.ui.components + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.SheetState +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.lilstiffy.mockgps.ui.components.listitems.FavoriteListItem +import com.lilstiffy.mockgps.ui.models.LocationEntry + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun FavoritesListComponent( + onDismissRequest: () -> Unit, + sheetState: SheetState, + data: List, + onEntryClicked: (entry: LocationEntry) -> Unit, +) { + ModalBottomSheet( + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight(0.75f), + onDismissRequest = onDismissRequest, + sheetState = sheetState, + windowInsets = WindowInsets(0, 0, 0, 0) + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 8.dp) + ) { + // Title + Text( + modifier = Modifier.padding(horizontal = 16.dp), + text = "Favorite locations", + fontSize = 18.sp, + fontWeight = FontWeight.Bold, + color = MaterialTheme.colorScheme.onSurface + ) + + // List view + if (data.isNotEmpty()) { + LazyColumn( + contentPadding = PaddingValues(8.dp), + userScrollEnabled = true + ) { + items(data) { + Row { + FavoriteListItem( + locationEntry = it, + onClick = { onEntryClicked(it) } + ) + } + } + } + } else { + Text( + modifier = Modifier.align(Alignment.CenterHorizontally), + text = "No favorites have been added", + textAlign = TextAlign.Center + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lilstiffy/mockgps/ui/components/FooterComponent.kt b/app/src/main/java/com/lilstiffy/mockgps/ui/components/FooterComponent.kt new file mode 100644 index 0000000..0d3c583 --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/ui/components/FooterComponent.kt @@ -0,0 +1,184 @@ +package com.lilstiffy.mockgps.ui.components + +import android.location.Address +import androidx.compose.foundation.background +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.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Close +import androidx.compose.material.icons.filled.Home +import androidx.compose.material.icons.filled.Place +import androidx.compose.material.icons.filled.PlayArrow +import androidx.compose.material.icons.sharp.Star +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.IconButtonDefaults +import androidx.compose.material3.IconToggleButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.google.android.gms.maps.model.LatLng +import com.lilstiffy.mockgps.extensions.displayString +import com.lilstiffy.mockgps.extensions.prettyPrint +import com.lilstiffy.mockgps.service.VibratorService +import com.lilstiffy.mockgps.ui.theme.ButtonGreen +import com.lilstiffy.mockgps.ui.theme.ButtonRed +import com.lilstiffy.mockgps.ui.theme.Gold + +@Composable +fun FooterComponent( + modifier: Modifier = Modifier, + address: Address?, + latLng: LatLng, + isMocking: Boolean, + isFavorite: Boolean = false, + onStart: () -> Unit, + onFavorite: () -> Unit, +) { + Box( + modifier = modifier + .background( + color = MaterialTheme.colorScheme.surface, + shape = RoundedCornerShape(16.dp) + ) + ) { + Column( + modifier = Modifier + .padding(16.dp) + ) { + // Location section + Row { + Icon( + modifier = Modifier + .height(32.dp) + .width(32.dp) + .align(Alignment.CenterVertically), + imageVector = Icons.Filled.Home, + tint = Color.Gray, + contentDescription = "address" + ) + + Spacer(modifier = Modifier.width(8.dp)) + + Text( + modifier = Modifier + .align(Alignment.CenterVertically) + .fillMaxWidth(0.85f), + color = MaterialTheme.colorScheme.onSurface, + maxLines = 3, + text = address?.displayString() ?: "\n" + ) + } + + Spacer(modifier = Modifier.height(4.dp)) + + // Coordinates section + Row { + Icon( + modifier = Modifier + .height(32.dp) + .width(32.dp) + .align(Alignment.CenterVertically), + imageVector = Icons.Filled.Place, + tint = Color.Red, + contentDescription = "coordinates" + ) + + Spacer(modifier = Modifier.width(8.dp)) + + Text( + modifier = Modifier + .align(Alignment.CenterVertically), + color = MaterialTheme.colorScheme.onSurface, + text = latLng.prettyPrint() + ) + } + + Spacer(modifier = Modifier.height(16.dp)) + + // Button row + Row( + modifier = Modifier.fillMaxWidth() + ) { + + // Favorite button. + IconButton( + modifier = Modifier + .width(32.dp) + .height(32.dp) + .align(Alignment.CenterVertically), + onClick = { + onFavorite() + VibratorService.vibrate() + }, + colors = IconButtonDefaults.iconButtonColors( + contentColor = if (isFavorite) Gold else Color.LightGray, + ) + ) { + Icon( + modifier = Modifier + .height(32.dp) + .width(32.dp) + .align(Alignment.CenterVertically), + imageVector = Icons.Sharp.Star, + contentDescription = "toggle favorite" + ) + } + + Spacer(modifier = Modifier.width(16.dp)) + + // Toggle mocking button + IconToggleButton( + modifier = Modifier + .height(48.dp) + .fillMaxWidth(), + checked = isMocking, + colors = IconButtonDefaults.filledIconToggleButtonColors( + checkedContainerColor = ButtonRed, + containerColor = ButtonGreen, + contentColor = Color.White + ), + onCheckedChange = { + onStart() + }, + ) { + Row { + Icon( + modifier = Modifier + .align(Alignment.CenterVertically), + imageVector = if (isMocking) Icons.Filled.Close else Icons.Filled.PlayArrow, + tint = Color.White, + contentDescription = "toggle mocking" + ) + + Text( + modifier = Modifier + .align(Alignment.CenterVertically), + style = TextStyle( + color = Color.White, + fontWeight = FontWeight.SemiBold, + fontSize = 16.sp + ), + text = if (isMocking) "Stop mocking" else "Start mocking" + ) + } + } + } + + } + } +} diff --git a/app/src/main/java/com/lilstiffy/mockgps/ui/components/SearchComponent.kt b/app/src/main/java/com/lilstiffy/mockgps/ui/components/SearchComponent.kt new file mode 100644 index 0000000..eaa2004 --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/ui/components/SearchComponent.kt @@ -0,0 +1,99 @@ +package com.lilstiffy.mockgps.ui.components + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Search +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.IconButtonDefaults +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.material3.TextFieldDefaults +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.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalSoftwareKeyboardController +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@OptIn(ExperimentalMaterial3Api::class, ExperimentalComposeUiApi::class) +@Composable +fun SearchComponent( + modifier: Modifier = Modifier, + onSearch: (text: String) -> Unit, +) { + var text by remember { mutableStateOf("") } + val keyboardController = LocalSoftwareKeyboardController.current + + Box( + modifier = modifier + ) { + // Input field + TextField( + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight() + .align(Alignment.TopCenter), + value = text, + singleLine = true, + maxLines = 1, + textStyle = TextStyle.Default, + label = { Text("Search Location") }, + colors = TextFieldDefaults.textFieldColors( + containerColor = MaterialTheme.colorScheme.surface, + focusedIndicatorColor = Color.Transparent, + disabledIndicatorColor = Color.Transparent, + unfocusedIndicatorColor = Color.Transparent + ), + shape = RoundedCornerShape(32.dp), + onValueChange = { text = it }, + keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), + keyboardActions = KeyboardActions(onDone = { + onSearch(text) + keyboardController?.hide() + }) + ) + + // Search button + IconButton( + modifier = Modifier + .align(Alignment.CenterEnd) + .padding(horizontal = 8.dp), + onClick = { onSearch(text) }, + colors = IconButtonDefaults.iconButtonColors( + containerColor = Color.Blue, contentColor = Color.White + ) + ) { + Icon( + modifier = Modifier + .align(Alignment.Center), + imageVector = Icons.Filled.Search, + contentDescription = "search" + ) + } + } + +} + +@Preview +@Composable +fun SearchComponentPreview() { + SearchComponent(onSearch = {}) +} + diff --git a/app/src/main/java/com/lilstiffy/mockgps/ui/components/listitems/FavoriteListItem.kt b/app/src/main/java/com/lilstiffy/mockgps/ui/components/listitems/FavoriteListItem.kt new file mode 100644 index 0000000..c9ac3c5 --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/ui/components/listitems/FavoriteListItem.kt @@ -0,0 +1,87 @@ +package com.lilstiffy.mockgps.ui.components.listitems + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.width +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Home +import androidx.compose.material.icons.filled.Place +import androidx.compose.material3.Divider +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import com.lilstiffy.mockgps.extensions.prettyPrint +import com.lilstiffy.mockgps.ui.models.LocationEntry + +@Composable +fun FavoriteListItem( + modifier: Modifier = Modifier, + locationEntry: LocationEntry, + onClick: () -> Unit, +) { + Column( + modifier = modifier + .fillMaxWidth() + .clickable { onClick() } + ) { + Spacer(modifier = Modifier.height(16.dp)) + // Location section + Row { + Icon( + modifier = Modifier + .height(32.dp) + .width(32.dp) + .align(Alignment.CenterVertically), + imageVector = Icons.Filled.Home, + tint = Color.Gray, + contentDescription = "address" + ) + + Spacer(modifier = Modifier.width(8.dp)) + + Text( + modifier = Modifier + .align(Alignment.CenterVertically) + .fillMaxWidth(0.85f), + color = MaterialTheme.colorScheme.onSurface, + maxLines = 3, + text = locationEntry.addressLine ?: "-" + ) + } + + Spacer(modifier = Modifier.height(4.dp)) + + // Coordinates section + Row { + Icon( + modifier = Modifier + .height(32.dp) + .width(32.dp) + .align(Alignment.CenterVertically), + imageVector = Icons.Filled.Place, + tint = Color.Red, + contentDescription = "coordinates" + ) + + Spacer(modifier = Modifier.width(8.dp)) + + Text( + modifier = Modifier + .align(Alignment.CenterVertically), + color = MaterialTheme.colorScheme.onSurface, + text = locationEntry.latLng.prettyPrint() + ) + } + Spacer(modifier = Modifier.height(16.dp)) + Divider() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lilstiffy/mockgps/ui/models/LocationEntry.kt b/app/src/main/java/com/lilstiffy/mockgps/ui/models/LocationEntry.kt new file mode 100644 index 0000000..90bdfae --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/ui/models/LocationEntry.kt @@ -0,0 +1,8 @@ +package com.lilstiffy.mockgps.ui.models + +import com.google.android.gms.maps.model.LatLng + +data class LocationEntry( + var latLng: LatLng, + var addressLine: String? = null, +) diff --git a/app/src/main/java/com/lilstiffy/mockgps/ui/screens/MapScreen.kt b/app/src/main/java/com/lilstiffy/mockgps/ui/screens/MapScreen.kt new file mode 100644 index 0000000..21f3dd4 --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/ui/screens/MapScreen.kt @@ -0,0 +1,209 @@ +package com.lilstiffy.mockgps.ui.screens + +import android.widget.Toast +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.navigationBarsPadding +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.statusBarsPadding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.List +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.IconButtonDefaults +import androidx.compose.material3.rememberModalBottomSheetState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.unit.dp +import androidx.compose.ui.zIndex +import androidx.lifecycle.viewmodel.compose.viewModel +import com.google.android.gms.maps.CameraUpdateFactory +import com.google.android.gms.maps.model.CameraPosition +import com.google.android.gms.maps.model.MapStyleOptions +import com.google.maps.android.compose.GoogleMap +import com.google.maps.android.compose.MapProperties +import com.google.maps.android.compose.MapUiSettings +import com.google.maps.android.compose.Marker +import com.google.maps.android.compose.MarkerState +import com.google.maps.android.compose.rememberCameraPositionState +import com.lilstiffy.mockgps.MainActivity +import com.lilstiffy.mockgps.R +import com.lilstiffy.mockgps.extensions.roundedShadow +import com.lilstiffy.mockgps.service.LocationHelper +import com.lilstiffy.mockgps.storage.StorageManager +import com.lilstiffy.mockgps.ui.components.FavoritesListComponent +import com.lilstiffy.mockgps.ui.components.FooterComponent +import com.lilstiffy.mockgps.ui.components.SearchComponent +import com.lilstiffy.mockgps.ui.screens.viewmodels.MapViewModel +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun MapScreen( + mapViewModel: MapViewModel = viewModel(), + activity: MainActivity, +) { + val scope = rememberCoroutineScope() + + var isMocking by remember { mutableStateOf(false) } + val cameraPositionState = rememberCameraPositionState { + position = CameraPosition.fromLatLngZoom(mapViewModel.markerPosition.value, 15f) + } + + val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) + var showBottomSheet by remember { mutableStateOf(false) } + + val MapStyle = if (isSystemInDarkTheme()) + MapStyleOptions.loadRawResourceStyle(LocalContext.current, R.raw.style_json) + else + MapStyleOptions("") + + fun animateCamera() { + scope.launch(Dispatchers.Main) { + cameraPositionState.animate( + update = CameraUpdateFactory.newCameraPosition( + CameraPosition(mapViewModel.markerPosition.value, 15f, 0f, 0f) + ), + durationMs = 1000 + ) + } + } + + Box(modifier = Modifier.fillMaxSize()) { + // Google maps + GoogleMap( + modifier = Modifier.fillMaxSize(), + onMapLoaded = { + LocationHelper.requestPermissions(activity) + mapViewModel.updateMarkerPosition(mapViewModel.markerPosition.value) + }, + properties = MapProperties( + mapStyleOptions = MapStyle + ), + uiSettings = MapUiSettings( + tiltGesturesEnabled = false, + myLocationButtonEnabled = false, + zoomControlsEnabled = false, + mapToolbarEnabled = false, + compassEnabled = false + ), + onMapClick = { latLng -> + if (!isMocking) { + mapViewModel.updateMarkerPosition(latLng) + } + }, + cameraPositionState = cameraPositionState + ) { + Marker( + state = MarkerState(mapViewModel.markerPosition.value) + ) + } + + Column( + modifier = Modifier.statusBarsPadding() + ) { + SearchComponent( + modifier = Modifier + .align(Alignment.CenterHorizontally) + .fillMaxHeight(0.075f) + .fillMaxWidth() + .padding(4.dp) + .roundedShadow(32.dp) + .zIndex(32f), + onSearch = { searchTerm -> + // We don't want to support switching locations while already mocking + if (isMocking) { + Toast.makeText( + activity, + "You can't search while mocking location", + Toast.LENGTH_SHORT + ).show() + return@SearchComponent + } + + LocationHelper.geocoding(searchTerm) { foundLatLng -> + foundLatLng?.let { + mapViewModel.updateMarkerPosition(it) + animateCamera() + } + } + } + ) + + // Favorites button. + IconButton( + modifier = Modifier + .padding(horizontal = 12.dp) + .align(Alignment.End), + onClick = { showBottomSheet = true }, + colors = IconButtonDefaults.iconButtonColors( + containerColor = Color.Blue, contentColor = Color.White + ) + ) { + Icon( + imageVector = Icons.Filled.List, + contentDescription = "show favorites" + ) + } + } + + FooterComponent( + modifier = Modifier + .align(Alignment.BottomCenter) + .fillMaxWidth(1f) + .navigationBarsPadding() + .padding(4.dp) + .zIndex(32f) + .roundedShadow(16.dp), + address = mapViewModel.address.value, + latLng = mapViewModel.markerPosition.value, + isMocking = isMocking, + isFavorite = mapViewModel.markerPositionIsFavorite.value, + onStart = { isMocking = activity.toggleMocking() }, + onFavorite = { mapViewModel.toggleFavoriteForLocation() } + ) + + if (showBottomSheet) { + FavoritesListComponent( + onDismissRequest = { + showBottomSheet = false + }, + sheetState = sheetState, + data = StorageManager.favorites, + onEntryClicked = { clickedEntry -> + if (isMocking) { + Toast.makeText( + activity, + "You can't switch location while mocking", + Toast.LENGTH_SHORT + ).show() + return@FavoritesListComponent + } + mapViewModel.apply { + mapViewModel.updateMarkerPosition(clickedEntry.latLng) + scope.launch { + sheetState.hide() + showBottomSheet = false + } + animateCamera() + } + } + ) + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/lilstiffy/mockgps/ui/screens/viewmodels/MapViewModel.kt b/app/src/main/java/com/lilstiffy/mockgps/ui/screens/viewmodels/MapViewModel.kt new file mode 100644 index 0000000..cbc6359 --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/ui/screens/viewmodels/MapViewModel.kt @@ -0,0 +1,50 @@ +package com.lilstiffy.mockgps.ui.screens.viewmodels + +import android.location.Address +import androidx.compose.runtime.MutableState +import androidx.compose.runtime.mutableStateOf +import androidx.lifecycle.ViewModel +import com.google.android.gms.maps.model.LatLng +import com.lilstiffy.mockgps.extensions.displayString +import com.lilstiffy.mockgps.service.LocationHelper +import com.lilstiffy.mockgps.service.MockLocationService +import com.lilstiffy.mockgps.storage.StorageManager +import com.lilstiffy.mockgps.ui.models.LocationEntry + +class MapViewModel : ViewModel() { + var markerPosition: MutableState = mutableStateOf(StorageManager.getLatestLocation()) + private set + var address: MutableState = mutableStateOf(null) + private set + + var markerPositionIsFavorite: MutableState = mutableStateOf(false) + + fun updateMarkerPosition(latLng: LatLng) { + markerPosition.value = latLng + MockLocationService.instance?.latLng = latLng + + LocationHelper.reverseGeocoding(latLng) { foundAddress -> + address.value = foundAddress + } + + checkIfFavorite() + } + + fun toggleFavoriteForLocation() { + StorageManager.toggleFavoriteForPosition(currentLocationEntry()) + checkIfFavorite() + } + + private fun checkIfFavorite() { + val currentLocationEntry = currentLocationEntry() + markerPositionIsFavorite.value = StorageManager.containsFavoriteEntry(currentLocationEntry) + } + + private fun currentLocationEntry(): LocationEntry { + return LocationEntry( + latLng = markerPosition.value, + addressLine = address.value?.displayString() + ) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/lilstiffy/mockgps/ui/theme/Color.kt b/app/src/main/java/com/lilstiffy/mockgps/ui/theme/Color.kt new file mode 100644 index 0000000..1e6941b --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/ui/theme/Color.kt @@ -0,0 +1,18 @@ +package com.lilstiffy.mockgps.ui.theme + +import androidx.compose.ui.graphics.Color + +val Purple80 = Color(0xFFD0BCFF) +val PurpleGrey80 = Color(0xFFCCC2DC) +val Pink80 = Color(0xFFEFB8C8) + +val Purple40 = Color(0xFF6650a4) +val PurpleGrey40 = Color(0xFF625b71) +val Pink40 = Color(0xFF7D5260) + +val Gold = Color(0xFFFFD700) +val FederalBlue = Color(0xFF03045E) + +// Button colors +val ButtonGreen = Color(0xFF58AD69) +val ButtonRed = Color(0xFFE2574C) \ No newline at end of file diff --git a/app/src/main/java/com/lilstiffy/mockgps/ui/theme/FontStyles.kt b/app/src/main/java/com/lilstiffy/mockgps/ui/theme/FontStyles.kt new file mode 100644 index 0000000..490b4ab --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/ui/theme/FontStyles.kt @@ -0,0 +1,14 @@ +package com.lilstiffy.mockgps.ui.theme + +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.sp + +val TextBody = TextStyle( + color = Color.Black, + textAlign = TextAlign.Start, + fontSize = 16.sp, + fontWeight = FontWeight.Normal +) \ No newline at end of file diff --git a/app/src/main/java/com/lilstiffy/mockgps/ui/theme/Theme.kt b/app/src/main/java/com/lilstiffy/mockgps/ui/theme/Theme.kt new file mode 100644 index 0000000..eae5e19 --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/ui/theme/Theme.kt @@ -0,0 +1,72 @@ +package com.lilstiffy.mockgps.ui.theme + +import android.app.Activity +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.toArgb +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalView +import androidx.core.view.WindowCompat + +private val DarkColorScheme = darkColorScheme( + primary = Purple80, + secondary = PurpleGrey80, + tertiary = Pink80 +) + +private val LightColorScheme = lightColorScheme( + primary = Purple40, + secondary = PurpleGrey40, + tertiary = Pink40 + + /* Other default colors to override + background = Color(0xFFFFFBFE), + surface = Color(0xFFFFFBFE), + onPrimary = Color.White, + onSecondary = Color.White, + onTertiary = Color.White, + onBackground = Color(0xFF1C1B1F), + onSurface = Color(0xFF1C1B1F), + */ +) + +@Composable +fun MockGpsTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + // Dynamic color is available on Android 12+ + dynamicColor: Boolean = true, + content: @Composable () -> Unit, +) { + val colorScheme = when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + + darkTheme -> DarkColorScheme + else -> LightColorScheme + } + val view = LocalView.current + if (!view.isInEditMode) { + SideEffect { + val window = (view.context as Activity).window + //set this to transparent + window.statusBarColor = Color.Transparent.toArgb() + WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = !darkTheme + } + } + + MaterialTheme( + colorScheme = colorScheme, + typography = Typography, + content = content + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/lilstiffy/mockgps/ui/theme/Type.kt b/app/src/main/java/com/lilstiffy/mockgps/ui/theme/Type.kt new file mode 100644 index 0000000..c2c003e --- /dev/null +++ b/app/src/main/java/com/lilstiffy/mockgps/ui/theme/Type.kt @@ -0,0 +1,34 @@ +package com.lilstiffy.mockgps.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +// Set of Material typography styles to start with +val Typography = Typography( + bodyLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp + ) + /* Other default text styles to override + titleLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 22.sp, + lineHeight = 28.sp, + letterSpacing = 0.sp + ), + labelSmall = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Medium, + fontSize = 11.sp, + lineHeight = 16.sp, + letterSpacing = 0.5.sp + ) + */ +) \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_play.xml b/app/src/main/res/drawable/ic_play.xml new file mode 100644 index 0000000..351d0a8 --- /dev/null +++ b/app/src/main/res/drawable/ic_play.xml @@ -0,0 +1,10 @@ + + + + diff --git a/app/src/main/res/drawable/ic_stop.xml b/app/src/main/res/drawable/ic_stop.xml new file mode 100644 index 0000000..89f364d --- /dev/null +++ b/app/src/main/res/drawable/ic_stop.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..3bc6e63b97c8c08211a7a0d533fbd0fc9cdece0d GIT binary patch literal 7689 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 Nz{Ch=NCTY1{|D0RTHOEu literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..97c1ec2bafd559519fa9beb5b4b059ddc75c05e0 GIT binary patch literal 9950 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..7ef59a1f2fc8981668988505adcadd97e243fb08 GIT binary patch literal 4375 zcmV+y5$NuTP)Px_(Md!>RA@uhT4`_;hn4>39?gud86gP}2m}aeu>jiyg8>t;oh)I?SD845B^$>J zt{9UoV-6GBc(*p|BTk%3IJSy1UON~OC$Rw;FlR7EED6{^#H|AfBy^yAuAb?0>%HzC zMuWK4`)9jK)o3)`{l0g6?|ZMY;Q#qy`9HFs?vwh{->o$OsXyPygl_`CG}yXw<;u(_ zX3csykexl*=XRI*(=%phvJ8u=K$R8!EJ^6@={XP%g-&&JbsgEYckiBm-LN4DKurR5 z$6)?90O%Sk0Q=WRjyzT{c<_$~WM}_984OtgWC>6dX!LJI27j*5=Q1=!)&H%k&=dt7 zy*;}cT3SAw^2{?^0LV#TZX3v*0wBX3C%*b>{)nQYmwj&c2vrneQB?M@MN^?khUXJ! ziT_Su2%rgw&zc5JRS^+{x|-%IZ%uygxs3p%JBi5c0-*2NcJJPO@4e&3y&1^Lnn509 zgV-?gGI`aALXzjNMMefxg#mH|B#Ftcfa=~h|vDYn>@BN&K_hX?DA{VM*JAWPy>LaSEM}ydiirA=!L|w=d zI#u;x(OYlM1|TFCbus|@x8ut%zkGJu#EI)}#`DB7vLqoc%dig|2yY;e@CZdCE(q*( zGJp;OMc~|NX|Opcf%K!Np#j1d2jPuGVO3;Ul0BbX8m7b0o>xSPJs+h|4H<$opO3F6Z#P}2M%%?YL_0bl_6DKFW1Q=Dy93rV zH@pLKkvqB=L(9te8j4b+qXRvA_QKuV45v|B3AQs?&xlF{TK(YP{$@OY2mpoeVOY=J z-@SeN(+|&>@j-GirSiNiiinCLJR?TH<@NIALL`E(cI<%C-3^DT!fCZJW!eZB7q<*4 zE1cnS6buy&di4n~@O;!>MU~SdATN6gbu7{_gG{J+XPyW-|&V z0P?=4sjhBIejxA=i!$zvMqW}!HR?eS1lWcQfiEYAAKuy0g0ly{fGre)$K`^ZRGvmT zt-?y$$henkTu%;&L~hz}C|XpW6ioENmpzh$Y>J zz}0OXBRT;c34=V zCpAi=7XBO+o_(@n%O>gzCIHXL!-wB38&$lJ1z3unr#zHmF@#+%
!t29+tqp7kI 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 RurdGu002ovPDHLkV1lF#P%8ic literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_background.png b/app/src/main/res/mipmap-mdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..8234787db31c6952387b359ee8d63c3feb29c49c GIT binary patch literal 2225 zcmV;i2u}BjP)Px-Ye_^wRCr$PUHOX~MHub+|9>!e5;Q0gBVI(*c%Z?9C>n?of(KDF5G4c+gfKh1 zGn?s_>8h@-vtM;r_5CdbvNO{?OTGS%_noXLiXvP3Po8JR;gDr{F8>wP|HbR|@6~7c z=ZiyqP5FB+?jv5ef6p^keP5Ahnf#o%kM(`W`xRLx?puCec^!YgVi1Y6G$B(@At_EhkxGtK#0#R8!#zZ$`hQ6<4zdQol-y?E zdUg}e3ch{^mUY~ei17c8zGoOuDZ0-ohniGsM#2e6g!EIkNq^SXHewj!Q|@@LZr zY-K!4jpoviZTIvRFTt@ zu$A*He{m4c5=;v);#pRemML-50gQN-$V5Bxb*1w$C6!1#ODPGc>k;)*fvM!fh-dLa zQcr=Y3{_2{E)jZz>*HAnxbbWl@hrd1QqwC&anLw`LCIP#&(hucDb&^z&+pox6>$9lMm(z%&l;x#6G|5GEME_^8HzGHL(@wb@vJDGHEeA?@vLZ` zW!kL%IxvZ6CE;1as6^sf$#|A&v&^ELcpFAMD=E*is;1O|E73(b&>JM4)s|=V*KR~S zs~4W-n#`k?3UpJ6P_l?;b>&&<3rUG*^~$r<=>qY!^~AG!=UL8SWs3O;SBb>42H{z0 zR3h=L!FZNcHPza!C!RGZ&*C=BQ>O?g;XrSYcvfnjWlca8CE8Uc+Hb>%XN|(M+$xc` z8~G>UK*=JW)fdmIRH9WXa1@{{bF>=~&l;6y)gxw=IgJ7=8!+Noqw_3VC34BCerg*= zJZlm>%NqV{jHu^;5zm?o&r)aWyVeP?;&9-A$u0?FthYHMR}R8=PtXjX?Agy;cT^LB z=3sc65j?f-@cRtni+GlF>pjaKSiavE+GYX`IO17D^Q=w)>pnm35%V4(giR3rl*2oZYn z@hlA3W>W&zbvKAc^d>OZ9nBj=b1-Z`berDBX1VfNh-X2-4o{wNz|2(_tq1Z8C&bz! z)DX-R+k0Hy@~G{`KPj|f_laY6Q`2eyG9PIssDVV4w#jUL_h2HbThcVTVVL48Y=SmcA?|{r;?Yr=ocd2I|j3b%Q9Mg?JXi zj~)K~PuQ?|?9YNW#N61>lwVR8s!fDvLBO6qd|1qBe-@hSj^+)bIT+;w5o)v4fP+Pl zYt^UOXuz`|V21|}5~#%C_GiVbL?c2oF`fkhd;0f3wn|jpe6aIzYIEJ^&a*IJ_wNh0 zz9}{+GM>by+^W$XT_dxu-Woq8X{MoeD=p z!Q4kILN`r&ir3Dw5Q1#?1Uvjlz3LR zqwVJ^cJ}cnQML7EB`mZd3$GjO2d4V2?DV5+N^QO3R1nYV`|La2pPha1VNh*7@vKhg zoBSendi8x=NE#X&B%YNVAoGUo^u4Rc2(4oWqc3sEx1ENh{A+rk^q&#WiUO5w-+7n2 z^(}1{@vNwG?|d;kee3N&mFSl^8H>~!=9(J$3<;f4e^%#{PIMvLUU^fWA|S^)1jGg% z-5apSS9E%|j-bePAiaMLexIkS1a<2tI^X2CVcR#ZG#23y&q{vgQ8#4U%dZF3*2~Vy zfXZO$Yy|ZbFRN}a3XOn^+4i-|GQA=j`>g6IwQ$r^*l7XTTm}~|xp*>9qtj%LSqM0k zDSw2WTzXY;>p=|$@vPCYWGAm&vTPXftkH4t{sHXd;>*po^~r6PgC2y|x?8j%$MX#% zdy1z99XomHqELy%v!(`)>+fNk7hVKzeM{a$JgZmS+2*6Lu literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..726b9395b638457bb970fec3e2d7830236e3b39a GIT binary patch literal 5225 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5b21e859e2397f3ceca202199bdaaeab19400446 GIT binary patch literal 11827 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..fb7eb149e84c9a260c852baded055daaa380fdd8 GIT binary patch literal 6219 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 y*dO9!+<>5eEgRtSyM%=nGd-Xhgrq|0000E3 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..868dff2d2b863f7453a69991123cfa151483b58c GIT binary patch literal 14991 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 z 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 d=`Q|8q~G>1h?ef?01B3e*v-%dIJCe literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png new file mode 100644 index 0000000000000000000000000000000000000000..454772642211333085cbc4b0190200a252ff3893 GIT binary patch literal 9447 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..bdf3a2ffcba1178d5a74eba46c3d8adf7a42a9cd GIT binary patch literal 33123 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 T;DcQu00000NkvXXu0mjf{gV2$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..51385afea870c473f7ef0dff323165c2250f227e GIT binary patch literal 28960 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..8cab7628800b43fd74027f2c5d632e594f3897a3 GIT binary patch literal 31155 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 MM>;CyO4gD82Sn)THvj+t literal 0 HcmV?d00001 diff --git a/app/src/main/res/raw/style_json.json b/app/src/main/res/raw/style_json.json new file mode 100644 index 0000000..1cbd616 --- /dev/null +++ b/app/src/main/res/raw/style_json.json @@ -0,0 +1,191 @@ +[ + { + "featureType": "all", + "elementType": "geometry", + "stylers": [ + { + "color": "#242f3e" + } + ] + }, + { + "featureType": "all", + "elementType": "labels.text.stroke", + "stylers": [ + { + "lightness": -80 + } + ] + }, + { + "featureType": "administrative", + "elementType": "labels.text.fill", + "stylers": [ + { + "color": "#746855" + } + ] + }, + { + "featureType": "administrative.locality", + "elementType": "labels.text.fill", + "stylers": [ + { + "color": "#d59563" + } + ] + }, + { + "featureType": "poi", + "elementType": "labels.text.fill", + "stylers": [ + { + "color": "#d59563" + } + ] + }, + { + "featureType": "poi.park", + "elementType": "geometry", + "stylers": [ + { + "color": "#263c3f" + } + ] + }, + { + "featureType": "poi.park", + "elementType": "labels.text.fill", + "stylers": [ + { + "color": "#6b9a76" + } + ] + }, + { + "featureType": "road", + "elementType": "geometry.fill", + "stylers": [ + { + "color": "#2b3544" + } + ] + }, + { + "featureType": "road", + "elementType": "labels.text.fill", + "stylers": [ + { + "color": "#9ca5b3" + } + ] + }, + { + "featureType": "road.arterial", + "elementType": "geometry.fill", + "stylers": [ + { + "color": "#38414e" + } + ] + }, + { + "featureType": "road.arterial", + "elementType": "geometry.stroke", + "stylers": [ + { + "color": "#212a37" + } + ] + }, + { + "featureType": "road.highway", + "elementType": "geometry.fill", + "stylers": [ + { + "color": "#746855" + } + ] + }, + { + "featureType": "road.highway", + "elementType": "geometry.stroke", + "stylers": [ + { + "color": "#1f2835" + } + ] + }, + { + "featureType": "road.highway", + "elementType": "labels.text.fill", + "stylers": [ + { + "color": "#f3d19c" + } + ] + }, + { + "featureType": "road.local", + "elementType": "geometry.fill", + "stylers": [ + { + "color": "#38414e" + } + ] + }, + { + "featureType": "road.local", + "elementType": "geometry.stroke", + "stylers": [ + { + "color": "#212a37" + } + ] + }, + { + "featureType": "transit", + "elementType": "geometry", + "stylers": [ + { + "color": "#2f3948" + } + ] + }, + { + "featureType": "transit.station", + "elementType": "labels.text.fill", + "stylers": [ + { + "color": "#d59563" + } + ] + }, + { + "featureType": "water", + "elementType": "geometry", + "stylers": [ + { + "color": "#17263c" + } + ] + }, + { + "featureType": "water", + "elementType": "labels.text.fill", + "stylers": [ + { + "color": "#515c6d" + } + ] + }, + { + "featureType": "water", + "elementType": "labels.text.stroke", + "stylers": [ + { + "lightness": -20 + } + ] + } +] diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..f8c6127 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..dd34d3a --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + MockGps + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..c2c19ec --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,5 @@ + + + +