Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Not compatible with Android 4.1 and below? #12

Open
IzzySoft opened this issue Jul 17, 2015 · 4 comments
Open

Not compatible with Android 4.1 and below? #12

IzzySoft opened this issue Jul 17, 2015 · 4 comments

Comments

@IzzySoft
Copy link

Though the F-Droid repo points out this backend should work on Android 2.3.3+, and according to the map my area is covered with a bunch of WiFi APs in the Mozilla database, I couldn't get it to work on my 4.1 device: it returns no location. A closer look with logcat (see this pastebin) suggests something here requires at least Android 4.2. Excerpt:

W/NlpLocationBackendHelper( 8976): java.lang.IllegalStateException: Requires Android 4.2+
[…]
Unbinding from: Intent { act=org.microg.nlp.LOCATION_BACKEND pkg=org.microg.nlp.backend.ichnaea cmp=org.microg.nlp.backend.ichnaea/.BackendService }

I had tried two other backends before (OpenBmap and Apple) which didn't work either (my area seems not to be covered in their databases), but this error only showed up when I added Ichnaea.

Any clues?

Note: The device is a tablet running Android 4.1.2. There are no newer Android versions available for it (neither stock nor custom ROMs), so I can't do anything from that end. And it has no GSM nor GPS, so my only choices are location services based on WiFi, so I'm currently stuck with these 3 of which none seems to work.

@mar-v-in
Copy link
Member

Using gsm cells to geolocate is not possible on Android version 4.1 and below because of missing API support on most devices.
Please try disabling cell location in the Mozilla backend settings.

@IzzySoft
Copy link
Author

Thanks! That exception is gone with this (you might consider "graying out" that option, or at least deactivate it and issue a warning when the user activates it on a device running 4.1 and below). Still doesn't work (see logcat excerpt at pastebin).

To make sure it's not simply due to DonkeyGuard still interfering (see lines 15, 28 and 41), I deactivated that module in Xposed, rebooted, and tried again (logcat here): stack traces are gone, still no success.

Looks like I'm haunted: cannot get this working on any device I try. Only my "good old Milestone²" simply works fine with the old NOGAPPS solution. Afraid to break that when updating, so I better don't (yet).

@mar-v-in
Copy link
Member

The second stack trace contains the right location (line 28) and this should mean that everything is working. Can you verify using a tool like Here GPS Location (select network and enable refresh, then wait a few seconds and read) that it still fails to locate you?

@IzzySoft
Copy link
Author

@mar-v-in I've seen that line, yes. But I suspected it being from Google's network location, as the Xposed module tells me it's not a UnifiedNlp source.

Of course I can try whether my location is shown in some app (will do so when I'm back home, I'm confident the location shows up (Edit: it does)) – but that doesn't tell me about the source of the location data. I don't want Google's location service to do anything on the device, but solely UnifiedNlp. So how can I tell the two apart in the logs? Wasn't there a string applied with UnifiedNlp locations? And if that line 28 comes from UnifiedNlp, why do lines 29/31 state "UnifiedNlp locations state changed to FAIL" / "UnifiedNlp location: FAIL"?

PS: I've checked for debugging settings, and found some in the OpenBmap module. Activated that, ran the Xposed check again. Now comes the strange thing: OpenBmap finds a location – but it's not the one that's reported later:

I/org.openbmap.unifiedNlp.Geocoder.OnlineProvider(11635): JSON response: {"source":"wifis","accuracy":30,"location":{"lng":11.570856997514667,"lat":48.166475879909996},"measurements":104}
D/Location found(11671): Location[mProvider=network,mTime=1437413601039,mLatitude=48.1664691,mLongitude=11.5706033,mHasAltitude=false,mAltitude=0.0,mHasSpeed=false,mSpeed=0.0,mHasBearing=false,mBearing=0.0,mHasAccuracy=true,mAccuracy=20.0,mExtras=Bundle[mParcelledData.dataSize=212]]
  • lat: 48.166475879909996 / 48.1664691
  • lon: 11.570856997514667 / 11.5706033

No indication that Ichnaea did anything except for these log entries – which rather suggest it's not active at all: "D/IchnaeaBackendService(11625): No instance found active." (Btw: between lines 7 and 8 are only debug infos from OpenBmap, which seems to confirm my suspicion that it's not used at all).

PPS: Just figured why the OpenBmap location did not make it: that backend crashed right after finding the location, throwing an java.lang.NoSuchMethodError: android.location.Location.getElapsedRealtimeNanos (link below this comment).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants