{"id":13646784,"url":"https://github.com/microg/UnifiedNlp","last_synced_at":"2025-04-21T21:31:25.573Z","repository":{"id":14733234,"uuid":"17454060","full_name":"microg/UnifiedNlp","owner":"microg","description":"Alternative network location provider for Android, with plugin interface to easily integrate third-party location providers.","archived":false,"fork":false,"pushed_at":"2023-10-14T04:22:50.000Z","size":921,"stargazers_count":968,"open_issues_count":108,"forks_count":209,"subscribers_count":92,"default_branch":"master","last_synced_at":"2024-10-30T22:40:31.544Z","etag":null,"topics":["android","android-app","geolocation","java","microg","unifiednlp"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/microg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSES/Apache-2.0.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-03-05T20:26:21.000Z","updated_at":"2024-10-26T08:37:28.000Z","dependencies_parsed_at":"2024-06-12T17:23:03.721Z","dependency_job_id":"bb9f3e7f-232b-4dca-a2c9-a3d1a4501b56","html_url":"https://github.com/microg/UnifiedNlp","commit_stats":null,"previous_names":["microg/android_packages_apps_unifiednlp"],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microg%2FUnifiedNlp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microg%2FUnifiedNlp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microg%2FUnifiedNlp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microg%2FUnifiedNlp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/microg","download_url":"https://codeload.github.com/microg/UnifiedNlp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223880277,"owners_count":17219094,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-app","geolocation","java","microg","unifiednlp"],"created_at":"2024-08-02T01:03:05.865Z","updated_at":"2024-11-09T20:30:33.122Z","avatar_url":"https://github.com/microg.png","language":"Java","readme":"\u003c!--\nSPDX-FileCopyrightText: 2014, microg Project Team\nSPDX-License-Identifier: CC-BY-SA-4.0\n--\u003e\n\n\u003cimg src=\"http://i.imgur.com/hXY4lcC.png\" height=\"42px\" alt=\"microG\" /\u003e Unified Network Location Provider\n==========\n[![Build Status](https://travis-ci.com/microg/UnifiedNlp.svg?branch=master)](https://travis-ci.com/microg/UnifiedNlp)\n\nThe next generation Network Location Provider, based on plugins. Usually abbreviated as UnifiedNlp.\n\n[![Available on F-Droid](https://f-droid.org/wiki/images/c/c4/F-Droid-button_available-on.png)](https://f-droid.org/repository/browse/?fdid=com.google.android.gms)\n\nInstallation\n------------\nRelease builds may be found on the [release page](https://github.com/microg/android_packages_apps_UnifiedNlp/releases).\n\nUnified Network Location Provider is provided in 3 variants:\n* NetworkLocation.apk – for the usual configuration of Android 4.4+ without GApps\n* LegacyNetworkLocation.apk – for the usual configuration of Android 2.3 - 4.3.1 without GApps\n* UnifiedNlp.apk – for Android WITH Gapps\n\nKeep in mind that:\n* All three variants are available on F-Droid as well, but they use different apk names (have a look at app description on F-Droid to check which version to use).\n* There is another repo containing the [deprecated version](https://github.com/microg/NetworkLocation) of NetworkLocation.apk without the plug-in system.\n* [microG GmsCore](https://github.com/microg/android_packages_apps_GmsCore/wiki) project already includes the Unified Network Location Provider.\n\n\n### Android 4.4 - 7.1.1 (KitKat / Lollipop / Marshmallow / Nougat)\nMost modern ROMs come with support for non-Google geolocation providers. On these systems installation is easy:\n\n1. Make sure that no Google geolocation tool is installed (it is usually listed as Google Play Services in Apps)\n2. Download and install `NetworkLocation.apk` as a usual app (you may need to enable \"Unknown sources\" in Settings-\u003eSecurity)\n3. Reboot and continue at [Usage](#usage)\n\nSome ROMs, especially those not based on AOSP might have problems using this method. However, if your system has root, you can try installing the hard way:\n\n1. Download `NetworkLocation.apk`\n2. Mount `/system` read-write (from your PC, call `adb root \u0026\u0026 adb remount`)\n3. Copy `NetworkLocation.apk` to `/system/priv-app` (from your PC, call `adb push NetworkLocation.apk /system/priv-app/NetworkLocation.apk`)\n4. Reboot (from you PC, call `adb reboot`) and continue at [Usage](#usage)\n\n**Note:** On Android 7 (or later) an [additional patch](https://github.com/microg/android_packages_apps_UnifiedNlp/blob/master/patches/android_frameworks_base-N.patch) is needed to make it working, or alternatively, you can install it in `/system/priv-app` as explained above.\n\n### Android 2.3 - 4.3.1 (Gingerbread / Honeycomb / Ice Cream Sandwich / Jelly Bean)\nOlder Android versions are no longer officially supported. However I still provide a legacy build, that should be compatible with those systems.\nIt is required to have a rooted system to install on Jelly Bean and older.\n\n1. Download `LegacyNetworkLocation.apk`\n2. Mount `/system` read-write (from your PC, call `adb root \u0026\u0026 adb remount`)\n3. Copy `LegacyNetworkLocation.apk` to `/system/app` (from your PC, call `adb push LegacyNetworkLocation.apk /system/app/LegacyNetworkLocation.apk`)\n4. Reboot (from you PC, call `adb reboot`) and continue at [Usage](#usage)\n\n\nUsage\n-----\nUnifiedNlp alone does not provide any features, but acts as a middleware for multiple backends. Most of them can be downloaded and updated using [F-Droid](https://f-droid.org).\nHere is a list of backends known to me.\n\nList of backends for geolocation:\n* [AppleWifiNlpBackend](https://github.com/microg/AppleWifiNlpBackend) - Uses Apple's service to resolve Wi-Fi locations. It has excellent coverage but the database is proprietary.\n* [OpenWlanMapNlpBackend](https://github.com/microg/OpenWlanMapNlpBackend) - Uses OpenWlanMap.org to resolve user location but the NLP backend did not reach release-quality, yet. Users interested in a freely licensed and downloadable database for offline use should stick with openBmap for now - *Last updated in 2015*\n* [OpenBmapNlpBackend](https://github.com/wish7code/org.openbmap.unifiedNlpProvider) - Uses [openBmap](https://radiocells.org/) to resolve user location. Community-created, freely licensed database that can optionally be downloaded for offline operation. The coverage [varies from country to country](https://radiocells.org/stats/countries) (it's best in central Europe).\n* [MozillaNlpBackend](https://github.com/microg/IchnaeaNlpBackend) - Uses the Mozilla Location Service to resolve user location. The coverage is OK. Only the cell tower database is free.\n* [LocalWifiNlpBackend](https://github.com/n76/wifi_backend) - Local location provider for Wi-Fi APs using on-phone generated database.\n* [LocalGSMLocationProvider](https://github.com/rtreffer/LocalGSMLocationProvider) - Local opencellid based location provider backend. Has been surpassed by LocalGSMBackend which also has an OpenCellID option - *Last update in 2014*\n* [LocalGSMBackend](https://gitlab.com/deveee/Local-GSM-Backend) - Local location provider for GSM cells. It works offline by downloading freely licensed database files from Mozilla, OpenCellID, or lacells.db.\n\nList of backends for (reverse) geocoding:\n* [NominatimGeocoderBackend](https://github.com/microg/NominatimGeocoderService) - Address lookup backend.\n\n(...) Create issue or pull request to extend either list :)\n\nAfter installing a backend, you can use UnifiedNlp by activating network-based geolocation in Settings-\u003eLocation. \nSince KitKat, you need to select any mode but \"device only\", on older Android version this setting is called \"Wi-Fi \u0026 mobile network location\" \n(ignore any misleading texts saying this is for Google's location service, you don't have Google's service installed but UnifiedNlp :smile:) \n\nBackend development\n-------------------\nThe API is available [here](https://github.com/microg/android_external_UnifiedNlpApi). Documentation may be found in the README provided with the API.\n\nYou might also take a look into existing backends, to see how they work out.\n\nBuilding\n--------\nUnifiedNlp can be easily built using Gradle.\n\n    git clone https://github.com/microg/UnifiedNlp\n    cd UnifiedNlp\n    ./gradlew build\n\n\nAttribution\n-----------\nSome components: Copyright (C) 2013 The Android Open Source Project\n\n`compat`-folder is extracted from different AOSP versions for cross-version compatibility\n\nLicense\n-------\n    Copyright (C) 2013-2022 microG Project Team\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n        http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n","funding_links":[],"categories":["Java"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicrog%2FUnifiedNlp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmicrog%2FUnifiedNlp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicrog%2FUnifiedNlp/lists"}