n76 / dejavu Goto Github PK
View Code? Open in Web Editor NEWYet another network location backend for the UnifiedNLP/microG project
License: GNU General Public License v3.0
Yet another network location backend for the UnifiedNLP/microG project
License: GNU General Public License v3.0
There is "no last known location" in UnifiedNlp despite all boxes checked in self-check and Deja Vu enabled.
"Use location" and "Wi-Fi scanning" are both checked/enabled in Android settings.
Android Version: 9
Custom ROM: LineageOS 16
I'm using:
WhatsApp crashes very often when I try to use the "share live location" feature. This feature is practically unusable as almost all of the attempts crash at some point.
"send current location" works fine. Only "share live location" has this problem.
If I switch to other UnifiedNlp backends (I tried MLS and Radiocells), then the crashes don't happen.
Edit: with Radiocells (org.openbmap.unifiedNlpProvider) the crashes don't happen, but the exact same ArrayIndexOutOfBoundsException is produced. The difference being that Radiocells is able to handle this gracefully and instead of crashing WhatsApp, the message attempt fails and WhatsApp UI displays a "Retry" button. See my reply below.
Edit2: I've seen the same ArrayIndexOutOfBoundsException happen with MLS too, albeit much less frequently. And WhatsApp doesn't crash either. In fact you can't notice it by watching the WhatsApp UI, only by monitoring logcat.
logcat dump:
--------- beginning of crash
10-26 22:08:10.595 3122 3122 E AndroidRuntime: FATAL EXCEPTION: main
10-26 22:08:10.595 3122 3122 E AndroidRuntime: Process: com.whatsapp, PID: 3122
10-26 22:08:10.595 3122 3122 E AndroidRuntime: java.lang.ArrayIndexOutOfBoundsException: length=30; index=30
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at a.b.c.f.f.a(Unknown Source:9)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at org.microg.gms.maps.mapbox.GoogleMapImpl.clear(Unknown Source:16)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at org.microg.gms.maps.mapbox.GoogleMapImpl.clear(Unknown Source:25)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at com.google.android.gms.maps.internal.IGoogleMapDelegate$Stub.onTransact(Unknown Source:846)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at org.microg.gms.maps.mapbox.GoogleMapImpl.onTransact(Unknown Source:0)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.os.Binder.transact(Binder.java:667)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at X.1EX.A02(:263077)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at X.1sP.clear(:330635)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at X.2aA.A03(:407683)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at X.2aA.A0S(:408227)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at X.0Yb.onAnimationStart(:177870)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.view.animation.Animation$1.run(Animation.java:373)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:873)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.os.Looper.loop(Looper.java:193)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6718)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
10-26 22:08:10.595 3122 3122 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
10-26 22:08:10.612 1211 2041 W ActivityManager: Force finishing activity com.whatsapp/.location.LocationPicker2
10-26 22:08:10.617 3122 3122 I Process : Sending signal. PID: 3122 SIG: 9
10-26 22:08:10.675 1211 1561 W InputDispatcher: channel 'c27227b com.whatsapp/com.whatsapp.location.LocationPicker2 (server)' ~ Consumer closed input channel or an error occurred. events=0x9
10-26 22:08:10.675 1211 1561 E InputDispatcher: channel 'c27227b com.whatsapp/com.whatsapp.location.LocationPicker2 (server)' ~ Channel is unrecoverably broken and will be disposed!
10-26 22:08:10.676 1211 1561 W InputDispatcher: channel 'f5f25e4 com.whatsapp/com.whatsapp.Conversation (server)' ~ Consumer closed input channel or an error occurred. events=0x9
10-26 22:08:10.676 1211 1561 E InputDispatcher: channel 'f5f25e4 com.whatsapp/com.whatsapp.Conversation (server)' ~ Channel is unrecoverably broken and will be disposed!
I have no financial way to thank the project. Clearly, the absence of a paypal tip jar is a bug in the project documentation! (I have too many ongoing projects to contribute with code so I figured, you know, cash is always welcome.)
I found DejaVu in the F-Droid store and wanted to use it so badly that I switched roms and stopped using gapps. :) The least I can do is buy a beer.
I have translated your application into zh-rCN
(Chinese (China)).
Maybe this one's translation is not inportant, but here is the xml:
<resources>
<string name="app_name">Déjà Vu 位置服务</string>
<string name="summary">一个使用设备自带的 RF 射频信号发射器实现的 microG/UnifiedNlp 位置提供器</string>
</resources>
Translation made with Stringlate.
Could you add "CDWiFi", "Regiojet - zluty"/"RegioJet - zluty" (Czech transport companies), "WESTlan" (Austrian Westbahn) and "Wifi in de trein" (Dutch NS) to the wifi blacklist?
And maybe the "OEBB" entry could be changed to only blacklist "OEBB" and not the stationary "OEBB-station" networks.
I like this project and immediately installed it to my phone, it already greatly improved location accuracy. IMHO, the "self-learning" approach is the highway to heaven. As well I like taking WiFi and GSM together, it no longer makes sense to have distinguished WiFi and GSM backends.
Therefore - thank you very much for your work.
But (sorry for the "but", but inavoidable):
Why should the achieved results not be shared amongst the users - in the case they want to? And why should every user build his own database from scratch? (Nobody will do anyway, but use several location backends at the same time, not knowing how they will interact, as I do now - now I have 3 backends, which may not be the optimal solution)
So - these are my thoughts on enhancements (certainly nothing new to you):
Sorry, this requires quite some controls and switches in the app. But as we're not iphone users, we should be able to handle them.
Chers,
Wolf
From the README
However based on warnings about high resource use when scanning for Bluetooth and the high probability that a Bluetooth device will be mobile that has not been implemented.
Bluetooth beacons are more likely to be stationary, and useful for positioning.
If the concern re scanning is power usage, then make scanning conditional:
I have a suggestion. Deja Vu could currently monitor for emitters appearing constantly with very low power usage. Then, if Deja Vu sees an emitter it hasn't seen before, it should try and get the most accurate location with low power usage. The logic would be as follows:
This would allow it to minimise GPS usage while updating the database more regularly.
At the moment I find myself forcing a GPS lock for long periods when on longer trips to gather data, which smashes my battery life.
I'd be happy to implement this if you're interested.
Non-blacklisted mobile emitters are moved if the bounding box is very large, see
DejaVu/app/src/main/java/org/fitchfamily/android/dejavu/RfEmitter.java
Lines 509 to 514 in e54aae2
Example:
We're in a train with a non-blacklisted WiFi (maybe blacklist is outdated, or maybe the WiFi doesn't broadcast SSID).
Once the WiFi is added to DejaVu DB, our location will be reported wherever we added the WiFi. If we have enough GPS accuracy and are more than moveDetectDistance
(300 m) away, the WiFi will be moved to our current position, and bad location reports will continue, but with a different location.
Proposed solution:
Don't move the emitter, instead don't use emitters with radius > moveDetectDistance
for location reports. Ideally there would be some EmitterStatus.STATUS_IGNORED
, which is set when radius is too large, and acts similar to blacklisted, but without removing the emitter from DB. The new status would avoid useless emitter updates in DB
Further example:
Same as above, but our GPS accuracy is not enough to move the emitter (e.g. we detected the emitter at the train station, but inside the train GPS accuracy is too bad)
Now the emitter will continue being used for location reports even though we have a contradicting GPS location.
Proposed solution:
Loosen the requirements in
gpsLoc.getAccuracy() > ourCharacteristics.reqdGpsAccuracy || gpsLoc.distanceTo(<center of emitter>) > moveDetectDistance + gpsLoc.getAccuracy() + <some padding to be sure>
.(related to #33 )
Hi !
When I install Déjà Vu Location Service 1.0.2 from F-Droid on my LG G4/H815 running LineageOS 13/Android 6.0.1, my phone freezes as soon as I activate the backend in MicroG UnifiedNlp settings. After about two minutes, the phone will reboot and freeze again as soon as it has finished booting. Same if I reboot it beforehand.
I need to reboot to recovery (e.g. with adb reboot recovery
) and delete /data/app/org.fitchfamily.android.dejavu
for my phone to stop freezing.
The latest build failed, look here.
I would at least like to be able to look at the data in the database. For export, the simplest thing seems to be just copying the database file (assuming it is sqlite) to the (real or emulated) SD card.
For import, this could be more work than is justified, but just iterating over a database in the above format and adding info for emitters not already known would help a lot with syncing between multiple personal devices.
I have the issue that DejaVu sometimes reports clearly wrong locations. There seem to be at least 2 different cases how this happens:
a) DejaVu reports a location far away, tens (in one case even hundreds) of km away from actual position. Every time it is the location of a GSM tower with the ID ending in /0/0 (in DejaVu database).
Are these entries even valid? http://www.cell2gps.com/ can't find any of those towers, same thing for the ones just ending in /0.
b) DejaVu reports a location a few km away, sometimes (rarely) even repeatedly over the course of several minutes and km while moving.
When looking in the database, I always find (one or more) WiFi entries near that location, and often the SSID indicates a stationary WiFi (e.g. a restaurant). Contrary to case a), there is nothing unusual in the entries. Trust is always at or close to 100.
It is impossible that my phone really sees the WiFi due to distance and houses in between, but apparently it still reports those WiFis. I am not sure whether this a problem of my phone or some bug in DejaVu...
Device:
S4 Mini Duos
AOKP (LineageOS 14.1 based)
MicroG 0.2.8.17785-mapbox
DejaVu 1.1.12 (no other location backends)
Hi,
When I try to activate (= simply check the box, no need to tap ok !) Déjà Vu 1.0.8 in MicroG/UnifiedNlp settings on a Sony Xperia SP (C5303) running Android 5.0.2 (CyanogenMod 12), the phone crashes then reboots 100% of the time :
I/ActivityManager(14083): Start proc org.fitchfamily.android.dejavu for service org.fitchfamily.android.dejavu/.BackendService: pid=17544 uid=10082 gids={50082, 9997} abi=armeabi-v7a
F/libc (17544): invalid address or address of corrupt block 0x28 passed to dlfree
F/libc (17544): Fatal signal 11 (SIGSEGV), code 1, fault addr 0xdeadbaad in tid 17544 (.android.dejavu)
I/DEBUG ( 670): property debug.db.uid not set; NOT waiting for gdb.
I/DEBUG ( 670): HINT: adb shell setprop debug.db.uid 100000
I/DEBUG ( 670): HINT: adb forward tcp:5039 tcp:5039
I/DEBUG ( 670): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 670): Build fingerprint: 'Sony/C5303/C5303:4.3/12.1.A.1.207/Nvt_nw:user/release-keys'
I/DEBUG ( 670): Revision: '0'
I/DEBUG ( 670): ABI: 'arm'
I/DEBUG ( 670): pid: 17544, tid: 17544, name: .android.dejavu >>> org.fitchfamily.android.dejavu <<<
I/DEBUG ( 670): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xdeadbaad
I/DEBUG ( 670): Abort message: 'invalid address or address of corrupt block 0x28 passed to dlfree'
I/DEBUG ( 670): r0 00000000 r1 b6fb6dec r2 deadbaad r3 00000000
I/DEBUG ( 670): r4 00000028 r5 b6fb80d4 r6 a4d21000 r7 00000030
I/DEBUG ( 670): r8 be8e7c5c r9 be8e7d1c sl b6ca6226 fp b6ca622f
I/DEBUG ( 670): ip 00008000 sp be8e7c08 lr b6f887af pc b6f887b0 cpsr 600d0030
I/DEBUG ( 670):
I/DEBUG ( 670): backtrace:
I/DEBUG ( 670): #00 pc 000287b0 /system/lib/libc.so (dlfree+1239)
I/DEBUG ( 670): #01 pc 0000f043 /system/lib/libc.so (free+10)
I/DEBUG ( 670): #02 pc 00013a1d /system/lib/libandroidfw.so (android::ResStringPool::uninit()+38)
I/DEBUG ( 670): #03 pc 00014777 /system/lib/libandroidfw.so (android::ResXMLTree::uninit()+12)
I/DEBUG ( 670): #04 pc 00014795 /system/lib/libandroidfw.so (android::ResXMLTree::~ResXMLTree()+4)
I/DEBUG ( 670): #05 pc 00011487 /system/lib/libandroidfw.so (android::AssetManager::getPkgName(char const*)+258)
I/DEBUG ( 670): #06 pc 000114e9 /system/lib/libandroidfw.so (android::AssetManager::getBasePackageName(unsigned int)+68)
I/DEBUG ( 670): #07 pc 00081af7 /system/lib/libandroid_runtime.so
I/DEBUG ( 670): #08 pc 00270eef /data/dalvik-cache/arm/system@[email protected]
I/DEBUG ( 670):
I/DEBUG ( 670): Tombstone written to: /data/tombstones/tombstone_04
I/BootReceiver(14083): Copying /data/tombstones/tombstone_04 to DropBox (SYSTEM_TOMBSTONE)
E/SharedPreferencesImpl(14083): Couldn't create directory for SharedPreferences file shared_prefs/log_files.xml
F/libc (14083): invalid address or address of corrupt block 0xa0 passed to dlfree
F/libc (14083): Fatal signal 11 (SIGSEGV), code 1, fault addr 0xdeadbaad in tid 14137 (ActivityManager)
I/DEBUG ( 670): property debug.db.uid not set; NOT waiting for gdb.
I/DEBUG ( 670): HINT: adb shell setprop debug.db.uid 100000
I/DEBUG ( 670): HINT: adb forward tcp:5039 tcp:5039
I/Zygote (13882): Process 17544 exited due to signal (11)
I/DEBUG ( 670): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 670): Build fingerprint: 'Sony/C5303/C5303:4.3/12.1.A.1.207/Nvt_nw:user/release-keys'
I/DEBUG ( 670): Revision: '0'
I/DEBUG ( 670): ABI: 'arm'
I/DEBUG ( 670): pid: 14083, tid: 14137, name: ActivityManager >>> system_server <<<
I/DEBUG ( 670): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xdeadbaad
I/DEBUG ( 670): Abort message: 'invalid address or address of corrupt block 0xa0 passed to dlfree'
I/DEBUG ( 670): r0 00000000 r1 b6fb6dec r2 deadbaad r3 00000000
I/DEBUG ( 670): r4 000000a0 r5 b6fb80d4 r6 9b1fb000 r7 000000a8
I/DEBUG ( 670): r8 a53a549c r9 a53a555c sl b6ca6226 fp b6ca622f
I/DEBUG ( 670): ip 00008000 sp a53a5448 lr b6f887af pc b6f887b0 cpsr 600d0030
I/DEBUG ( 670):
I/DEBUG ( 670): backtrace:
I/DEBUG ( 670): #00 pc 000287b0 /system/lib/libc.so (dlfree+1239)
I/DEBUG ( 670): #01 pc 0000f043 /system/lib/libc.so (free+10)
I/DEBUG ( 670): #02 pc 00013a1d /system/lib/libandroidfw.so (android::ResStringPool::uninit()+38)
I/DEBUG ( 670): #03 pc 00014777 /system/lib/libandroidfw.so (android::ResXMLTree::uninit()+12)
I/DEBUG ( 670): #04 pc 00014795 /system/lib/libandroidfw.so (android::ResXMLTree::~ResXMLTree()+4)
I/DEBUG ( 670): #05 pc 00011487 /system/lib/libandroidfw.so (android::AssetManager::getPkgName(char const*)+258)
I/DEBUG ( 670): #06 pc 000114e9 /system/lib/libandroidfw.so (android::AssetManager::getBasePackageName(unsigned int)+68)
I/DEBUG ( 670): #07 pc 00081af7 /system/lib/libandroid_runtime.so
I/DEBUG ( 670): #08 pc 00270eef /data/dalvik-cache/arm/system@[email protected]
I/DEBUG ( 670):
I/DEBUG ( 670): Tombstone written to: /data/tombstones/tombstone_05
I/sysmon-tsens_tz_sensor3( 710): sensor_work - read value = 340
E/installd( 679): eof
E/installd( 679): failed to read size
I/installd( 679): closing connection
I/lowmemorykiller( 655): ActivityManager disconnected
I/lowmemorykiller( 655): Closing Activity Manager data connection
I/ServiceManager( 656): service 'entropy' died
I/ServiceManager( 656): service 'commontime_management' died
I/ServiceManager( 656): service 'usb' died
…
I also had to grant location permission beforehand (cf #2), otherwise the whole system would become VERY unstable and eventually crash too.
Please note that this phone has a locked bootloader so I can't install an official, up-to-date LineageOS/CyanogenMod ROM, and had to rely on this : https://forum.xda-developers.com/xperia-sp/development/xperiasp-locked-bootloader-lbl-t2947194 so it's quite flaky overall.
in
cosLat
. This results in narrower bouding boxes (in degrees) for high latitude.Proposed solution:
change to (radius_ew * BackendService.METER_TO_DEG) / cosLat;
and change
((east - center_lon) * BackendService.DEG_TO_METER) * cosLat
DejaVu repeatedly crashes with a few apps that use location (but not all apps that use location). Here are segments of the event log:
03-05 00:48:33.596 I/am_crash( 2207): [5205,0,org.fitchfamily.android.dejavu,952680004,java.lang.NullPointerException,Attempt to invoke virtual method 'org.fitchfamily.android.dejavu.RfEmitter org.fitchfamily.android.dejavu.Database.getEmitter(org.fitchfamily.android.dejavu.RfIdentification)' on a null object reference,Cache.java,106]
03-05 01:20:37.514 I/am_crash( 2207): [10908,0,org.fitchfamily.android.dejavu,952680004,java.lang.NullPointerException,Attempt to invoke virtual method 'org.fitchfamily.android.dejavu.RfEmitter org.fitchfamily.android.dejavu.Database.getEmitter(org.fitchfamily.android.dejavu.RfIdentification)' on a null object reference,Cache.java,106]
03-05 01:20:39.576 I/am_proc_died( 2207): [0,10908,org.fitchfamily.android.dejavu]
03-05 01:20:39.688 I/sf_frame_dur( 288): [Application Error: org.fitchfamily.android.dejavu,11,1,0,1,0,2,0]
03-05 01:20:42.199 I/am_proc_start( 2207): [0,22144,10167,org.fitchfamily.android.dejavu,service,org.fitchfamily.android.dejavu/.BackendService]
03-05 01:20:42.336 I/am_proc_bound( 2207): [0,22144,org.fitchfamily.android.dejavu]
02-25 02:25:35.118 E/AndroidRuntime(9342): FATAL EXCEPTION: Thread-133
02-25 02:25:35.118 E/AndroidRuntime(9342): Process: org.fitchfamily.android.dejavu, PID: 9342
02-25 02:25:35.118 E/AndroidRuntime(9342): java.lang.NullPointerException: Attempt to invoke virtual method 'org.fitchfamily.android.dejavu.RfEmitter org.fitchfamily.android.dejavu.Database.getEmitter(org.fitchfamily.android.dejavu.RfIdentification)' on a null object reference
02-25 02:25:35.118 E/AndroidRuntime(9342): at org.fitchfamily.android.dejavu.Cache.get(Cache.java:106)
02-25 02:25:35.118 E/AndroidRuntime(9342): at org.fitchfamily.android.dejavu.BackendService.getRfLocations(BackendService.java:759)
02-25 02:25:35.118 E/AndroidRuntime(9342): at org.fitchfamily.android.dejavu.BackendService.endOfPeriodProcessing(BackendService.java:912)
02-25 02:25:35.118 E/AndroidRuntime(9342): at org.fitchfamily.android.dejavu.BackendService.backgroundProcessing(BackendService.java:727)
02-25 02:25:35.118 E/AndroidRuntime(9342): at org.fitchfamily.android.dejavu.BackendService.access$300(BackendService.java:71)
02-25 02:25:35.118 E/AndroidRuntime(9342): at org.fitchfamily.android.dejavu.BackendService$4.run(BackendService.java:668)
02-25 02:25:35.118 E/AndroidRuntime(9342): at java.lang.Thread.run(Thread.java:761)
Android 11 apparently requires new permissions to work in background : https://medium.com/swlh/request-location-permission-correctly-in-android-11-61afe95a11ad
Without it, DéjàVu doesn't seem to work (tested with Satstat). :-(
Here is a small contribution. Thanks for your work.
<resources>
<string name="app_name">Déjà Vu - Service de géolocalisation</string>
<string name="summary">Un service de géolocalisation pour microG/Unified Network Location Provider utilisant une base de données privée stockée sur le téléphone de l\'utilisateur</string>
</resources>
At the end of each reporting period, a check for missing emitters is done:
DejaVu/app/src/main/java/org/fitchfamily/android/dejavu/BackendService.java
Lines 976 to 993 in e54aae2
This makes sense, but is rather slow and not strictly necessary (mostly to clean old data from DB).
Performance of this check with a large database is actually so bad that DejaVu may end up as most battery consuming app (according to battery usage in Android settings).
Proposed improvements:
getExpected()
queries emitters from DB by latitude, longitude and type, so we should add an index on latitude, longitude and type to the database.EmitterType.MOBILE
has decrTrust
0, so trust cannot be decreased. There is no point in fetching MOBILE
emitters from DB.emitterCache.sync();
is not necessary: the only emitters that are not in DB (or are not updated) are emitters we have in seenSet
, and the only purpose of the expected check is decreasing trust of expected emitters that are not in the seenSet
.I noticed some bad GSM-based location reports with LAC (location area code) 0.
However, at least for GSM cells (maybe others as well), a valid LAC can't be 0, see
Location Area Code (LAC) which is a fixed length code (of 2 octets) identifying a location area within a GSM PLMN. This part of the location area identification can be coded using a full hexadecimal representation except for the following reserved hexadecimal values:
0000, and
FFFE.
from https://www.etsi.org/deliver/etsi_ts/123000_123099/123003/03.07.00_60/ts_123003v030700p.pdf
Proposed solution:
Treat LAC 0 as invalid.
(related to #33)
Current functionality:
DejaVu requires another app to request GPS location in order for database to begin being built (eg: Maps.me)
Desired functionality:
A toggle is made in DejaVu to actively build a database by requesting GPS on its own. Ideally this would be ran by the user for the first while in a new location to build new database entries.
I'm sure this would be a drain on battery however its implemented. Is this possible, or is this beyond the scope of this project? Thank you very much for this backend!
Can you please update org.microg:unifiednlp-api
to 1.5.6 and targetSdkVersion
to 27?
Like this.
Hi, there, I've found a version check is missing in version 1.1.12, which is downloaded from F-Droid.
The API getNeighboringCellInfo
is added in Android API-level 25, so if the app is running on a device less than 25, it will crash.
Currently this API is called in a try-catch here
For example,
if (Build.VERSION.SDK_INT >= 25)
// call the API
else
// something else
@n76 Could you help me view this? Very thx!
Greetings, Im a graphics designer here on Github and I would like to ask for your permission to design for your logo/icon that you maybe used for your future plans in your project. I want to help open source projects by designing logos or banners for there project. Thank you for your time reading this
Best regards
-jbeguna04
With a
grave, not a
acute. 😉
Thank you!
Thank you for your project and software!
Thank you for maintenance in the past and in the future!
Kind regards and season's greetings!
Hi, I have DejaVu installed in a Fairphone 2 with their latest Open FP OS, microG and Xposed. The backend worked initially but it tended to crash frequently. It crashed every time I deactivated and reactivated DejaVu in the microG framework app, and sometimes when there was database recording activity. I solved the problem by assigning full file system permissions (-rwxrwxrwx) to the two database files in /data/data/.
subj not collected by this backend: database lacks any wifi records other than "WLAN_24GHZ". also there is no traces from known 5GHz access points (no ssid nor bssid)
rooted stock Android 7, sony F5121, app version 1.0.2 from f-droid
After some test run (about 50 km) i found that GSM location doesnt work properly. In application database i found only one row related to GSM with strange 'rfID' = 'GSM/2147483647/2147483647/2147483647/2147483647' and absurdly large raduis 18190.615234375.
If it can help there is (minimum) 4 cells with this cell id (2147483647) in my area: 25099_15401_2147483647, 25099_15402_2147483647, 25099_41130_2147483647 and 25099_41129_2147483647.
In RfEmitter, blacklistWifi()
is only called from
Proposed Solution:
set note
using setNote
instead of note = <value>
Hi 👋🏻
I'd like to take a look into the database to see which data I've already collected.
Where is the DB located on my device and how can I open it? Maybe it's even worth adding these information to README.md
?
Best regards and thanks
OP3T running Android 11 (LineageOS). Only 2.4 GHz gets recorded in the database. On previous versions of LineageOS (although I can't pinpoint which was the last - could be 10 - mobile cells were recorded as well).
Lack of 5GHz WLAN possibly related to #31
"CDWiFi"
being compared to "cdwifi"
when the entry should match, so this entry is useless (applies to others as well).
Proposed solution:
only use lowercase when comparing with lc
.
I certainly agree with the points of this program, both having data where e.g. radiocells does not, and the privacy issue. But, it would be great to be able to have the data avoid lots of overlap with a backend that uses a downloaded database, to avoid recording things that are a) known and b) not incrementally useful given the values in the other database.
The idea would be to have a side channel to query the other provider, and if recording the emitter is not useful given that it's in the other db, skip it.
Obviously this needs to be configurable and default to off.
It could be that the savings in the database is small, but my LocalWifi backend now has 300K wifis in it, and I suspect a fair number of those are in radiocells.
I have translated your application into de
(German). Here is the xml:
<resources>
<string name="app_name">Standort Dienst mit Gedächtnis</string>
<string name="summary">Ein microG/UnifiedNlp Standortdienst der eine private Datenbank der Mobilfunkstationen benutzt</string>
</resources>
Not sure what am I doing wrong here but it appears that both DejaVu and GSM backend fail to work on my device. In case of DejaVu, I looked inside the database and it is correctly populated with both cellular and WiFi entries from the places I've been to. On the other hand, I am pretty sure that I have downloaded the Mozilla database correctly with the MCC codes for my country. In both cases however, I just never get a location while using OsmAnd or any other app. I do know MicroG is setup correctly because it takes less than 5 seconds to fetch location using the Mozilla (Ichnaea) backend. I also tested with SatStat and it shows exactly the same info as one of the entries in the DejaVu database, so I have no idea where is it going wrong. Thoughts?
@Lee-Carre @gdt @n76
In #41 was the question about someone willing to take over the project...
I'm definitely willing to help, but I don't have any experience with actually maintaining an app, or making it available in F-Droid. Maybe @gdt would be would be more suitable?
As mentioned, I've been working on some improvements:
What is changed
What is missing, but should be done
TelephonyManager.getNeighboringCellInfo
was removed in API 29, but is needed on some older phones where getAllCellInfo
does not work properly.
getNeighboringCellInfo
on old phones when building for API 29+?A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.