Code Monkey home page Code Monkey logo

mylocation's Introduction

mylocation's People

Contributors

mirfatif avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mylocation's Issues

Include Nominatim (UnifiedNlp)

Would it be possible to also include the UnifiedNlp Nominatim backend if installed, so one could see if it properly resolves?

Compass

What about adding a small compass if the phone has the sensor?

APK at v1.05 is unsigned

Could you please replace the APK at release v1.05 with a signed one? My updater complains:

DOES NOT VERIFY
ERROR: Missing META-INF/MANIFEST.MF
2024-01-01 03:31:38,057 ERROR: 
repo/com.mirfatif.mylocation_105.apk: 
2024-01-01 03:31:38,279 WARNING: Archiving com.mirfatif.mylocation_105.apk with invalid signature!

Clarify README about network provider

I have not yet absorbed all the API docuemntation, but I suspect many others are also unclear on what I'm writing about. It may also be that the details in this issue are off.

There is a network provider interface in AOSP, and my understanding is that UnifiedNLP provides an implementation of that, so apps that use the AOSP interface can function. There is also Google Play location serivces, which is nearly always accessed by including proprietary code in the app, and offers FusedLocation.

Given that MyLocation is on f-droid, I'm assuming that it lacks code for the Play API, and thus Network is the AOSP Network interface, and of course MyLocation doesn't know if that's implemented by Play Services, by standalone UnifiedNLP, or by UnifiedNLP-as-part-of-microg . That's not 100% clear from the README.

This also makes me wonder if the app has a non-Free build flavor that does query Play services, and especially if there is Free library support to query that, so that the f-droid version could make the queries, presumably possibly answered differently from straight Network even on systems with microg.

I mentioned a lot of things, but this issue is really meant to be that someone who mostly understands the landscape will not be 100% clear on which interface is being used. Thanks for having published this; while I'm nitpicking this is the best tool to debug by a wide margin.

F-Droid can't build

...as lsparanoid is not available in a trusted maven repo: https://gitlab.com/fdroid/fdroiddata/-/jobs/5618400469#L822

Now, I'm trying to remove it:

      - sed -i -e '/lsparanoid/d' ../buildSrc/build.gradle.kts ../buildSrc/src/main/kotlin/java-android-lib-conventions.gradle.kts
        ../buildSrc/src/main/kotlin/android-lib-conventions.gradle.kts ../gradle/libs.versions.toml
      - sed -i -e '/lsparanoid {/,/^}/d' -e '/lsparanoid/d' build.gradle ../buildSrc/src/main/kotlin/apk-conventions.gradle.kts

...but fails with:

...
> Task :buildSrc:compileKotlin
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:6:1 Expression 'andro
id' cannot be invoked as a function. The function 'invoke()' is not found
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:6:1 Unresolved refere
nce. None of the following candidates is applicable because of receiver type mismatch: 
internal val ComPluginGroup.android: ComAndroidPluginGroup defined in gradle.kotlin.dsl.plugins._6149f5dcd4467557eac003b2cbf171
dc in file PluginSpecBuilders.kt
internal val OrgJetbrainsKotlinPlatformPluginGroup.android: PluginDependencySpec defined in gradle.kotlin.dsl.plugins._6149f5dc
d4467557eac003b2cbf171dc in file PluginSpecBuilders.kt
internal val OrgJetbrainsKotlinPluginGroup.android: PluginDependencySpec defined in gradle.kotlin.dsl.plugins._6149f5dcd4467557
eac003b2cbf171dc in file PluginSpecBuilders.kt
internal val PluginDependenciesSpec.android: PluginDependencySpec defined in gradle.kotlin.dsl.plugins._6149f5dcd4467557eac003b
2cbf171dc in file PluginSpecBuilders.kt
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:7:3 Unresolved refere
nce: compileSdk
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:8:3 Unresolved refere
nce: buildToolsVersion
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:10:3 Unresolved refer
ence: defaultConfig
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:11:5 Unresolved refer
ence: minSdk
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:12:5 Unresolved refer
ence: targetSdk
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:14:5 Unresolved refer
ence: multiDexEnabled
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:17:3 Unresolved refer
ence: compileOptions
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:18:5 Unresolved refer
ence: sourceCompatibility
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:19:5 Unresolved refer
ence: targetCompatibility
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:21:5 Unresolved reference: isCoreLibraryDesugaringEnabled
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:24:3 Unresolved reference: kotlinOptions
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:24:17 Variable expected
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:26:3 Unresolved reference: buildTypes
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:27:5 Unresolved reference: release
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:28:7 Unresolved reference: isMinifyEnabled
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:29:7 Unresolved reference: isShrinkResources
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:31:7 Unresolved reference: proguardFiles
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:31:21 Unresolved reference: getDefaultProguardFile
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:35:3 Unresolved reference: dependenciesInfo
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:35:20 Variable expected
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:37:3 Unresolved reference: buildFeatures
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:38:5 Unresolved reference: viewBinding
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:39:5 Unresolved reference: dataBinding
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:40:5 Unresolved reference: buildConfig
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:41:5 Unresolved reference: compose
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:44:3 Unresolved reference: composeOptions
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:45:5 Unresolved reference: kotlinCompilerExtensionVersion
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:48:3 Unresolved reference: packaging
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:50:15 Unresolved reference: excludes
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:50:24 Unresolved reference: +=
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:55:3 Unresolved reference: implementation
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:56:3 Unresolved reference: implementation
e: file:///home/vagrant/build/com.mirfatif.mylocation/buildSrc/src/main/kotlin/apk-conventions.gradle.kts:57:3 Unresolved reference: coreLibraryDesugaring

> Task :buildSrc:compileKotlin FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':buildSrc:compileKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
   > Compilation error. See log for more details

/LE: fyi https://gitlab.com/fdroid/fdroiddata/-/commit/dca51868c959aa54e9572509030ffc83d0841063

Add mapsforge map

Using an online map would be a security problem by leaking location, so I'm suggesting adding a local map that can show all of the locations simultaneously. For an example of behavior (and likely some usable code), see SatStat which can show GPS in red and Network in blue, with error circles

Precision varies (minor)

I usually see DD.ddddd for latitude and longitude. This is ~1m and I think it's the right choice. But sometimes I see only 4 digits, and I'm guessing this means "5th digit of value is zero" rather than "there is some reason to think only 4 should be shown.

The concrete suggestion is thus to use a print format that always shows 5 digits, even if the fifth digit is 0.

Fastlane: el shortdesc too long

My scanner just reported el/short_description.txt having 98 chars. Fastlane allows for max 80 chars, so it will be truncated mid-word exactly at position 80. You might wish to adjust this so it doesn't look weird 😉

RFE: passive location provider

Very handy app. I primarily use it (especially the Lock G[NS]S toggle feature) during various surveying (OSM, collecting data for the likes of MLS, …) and general tinkering.

To that end, I would find it useful to interrogate the passive location provider (as a separate UI section to GNSS, network, UnifiedNLP).
Several apps I use regularly are (deliberately) configured to use the passive provider only. So, being able to easily query the same data they're using, would be helpful, especially for parameter-tuning.

Thanks for your attention.

Add logging

When using this as a debug tool, the dynamic behavior from startup is very interesting. For example I think I saw DejaVu first report cell-based location and then after wifi scan completed a better location.

Inspired by GPSTest, it would be nice to have a persistent setting for logs, and if set, then on each invocation a log file would be written to Downloads/MyLocation/yyyymmddThhmmss.json (UTC!) or something like that, and have records perhaps (in json but logically like):
time=t event=start
time=t event=location provider=foo lat=x lon=y hae=z accuracy=w
time=t event=disable provider=gps
time=t event=end

with the hope that some scripts in contrib could process this, but even humans reading it would be very useful.

Disabled UnifiedNLP providers are queried anyway (security)

On CalyxOS, UnifiedNLP is present via microg, and the Mozilla and DejaVu backends are preinstalled. I have configured Mozilla off in settings, to prevent location (wifi list) from being sent to Mozilla. (In addition to paranoia, I find that because I usually navigate to places with osmand, DejaVu has learned wifi for most places, and it therefore is sufficient 99% of the time.)

On starting MyLocation (f-droid, up to date today), I see that it reports a location value from DejaVu and one from Mozilla. In most respects this is great and useful detail, but it violates my configured policy not to use Mozilla. I'm really unclear on if Mozilla is operating in the background anyway always, or whether the query from MyLocation causes it to wake up and send wifi info to a server, but I'm assuming for now that this is triggered behavior.

For a fix, I suggest either

  • default to turning on providers only if UnifiedNLP has them enabled, if this is possible, which I'm guessing it isn't
    or
  • when first finding a provider, enable it if it is known to not send information off-device, which is a short allowlist of DejaVu, Local Wifi Backend, Local GSM Backend, etc. and otherwise disable it
  • store enable/disable status so if somebody wants to enable these and does, they aren't bothered every time

Network section greyed out and says Not Supported

I'm guessing that network location is showing "Not Supported" because I have google play services disabled on a "de-googled" stock Android 11. I'm suffering without location tagging photos or navigation, but I can't just install LineageOS on this phone (yet).

The readme.md says "On the devices with Google Play Services installed, NLP usually uses Google Location Service at backend." I installed an NLP backend, but that didn't help.

Due to the word "usually", I'm hoping there's a way to use network location without Google Location Service. And then it's a question of whether or not this app can provide network location to other apps.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.