Android app that mocks the GPS and Network location providers.
combination of:
FakeTraveler:
- pros:
- doesn't require root or system permissions
- only requires setting:
Developer > Mock Location
- only requires setting:
- includes a minimalist map embedded in a webview
- nice implementation
- static html page w/ 2-way javascript binding
- doesn't require root or system permissions
- cons:
- no bookmarks
- no geo intent filters
- no ability to "wander" from specified lat/lon
FakeGPS:
- pros:
- coding is excellent
- supports 2 ways to "wander" from specified lat/lon
- buttons (up, down, left, right) that apply a specified offset to current location
- accessed via a "joystick" that floats on top of other apps
- "fly to"
- user specifies a 2nd location and how much time it should take to travel there (as the crow flies)
- recalculates a new intermediate position every 1 second
- buttons (up, down, left, right) that apply a specified offset to current location
- supports bookmarking geo coordinates
- cons:
- requires root
- requires installation as a system app
- does NOT use the 'Mock Location' API
- hooks directly into low-level APIs
- "joystick" overlay is not optional
- always visible when GPS location is fake
- "joystick" overlay includes unnecessary buttons
- bookmarks cannot be edited
- no good way to push a geo coordinate into the app
- no internal webview with map
- no geo intent filters
Combine the best features from all:
FakeTraveler:
- methodology for mocking location (GPS and Network)
FakeGPS:
- overall architecture
- "joystick" and "fly to"
OsmAnd:
- geo intent filters
other considerations:
- though the embedded map in FakeTraveler is elegant
- the geo intent filters make this unnecessary
- external mapping software can provide better features
- Google Maps can work offline
- OsmAnd can work offline
- OsmAnd can broadcast geo intents
- external mapping software can provide better features
- the geo intent filters make this unnecessary
other enhancements:
- better bookmarks
- save from fields in UI
- save from geo intent
- add from dialog
- edit from list
- more preferences
- frequency at which location providers receive mock updates
- duration for which mock updates are sent to location providers each time the "start" button is pressed
0holds the special meaning that the duration is indefinite and will continue until the "stop" button is pressed
- ability to enable/disable "joystick"
- ability to configure the increment value added to lat/lon values each time a "joystick" button is pressed
- ability to continue to mock the destination after a trip simulation completes
Comparison of release APK variations
Mock-my-GPSvs.Mock-my-GPS-UnifiedNlp-Backendvs.Mock-SilentlyMock-my-GPS- installation is required
- minimum supported version of Android: 1.5 (Cupcake, API 3)
- standalone application
Mock-my-GPS-UnifiedNlp-Backend- installation is optional
- minimum supported version of Android: 2.3 (Gingerbread, API 9)
- backend plugin for UnifiedNlp, which is:
- typically installed as a component of microG
- intended for used on de-Googled Android ROMs
- a drop-in replacement for Google Location Services (GLS)
- behavior:
- while
Mock-my-GPSis running,Mock-my-GPS-UnifiedNlp-Backendprovides mocked location data toUnifiedNlp - by default, the timestamp for mocked location data updates is advanced by 45 seconds
- this causes
UnifiedNlpto prioritize the mocked location data, and to effectively ignore location data updates provided by all other backend plugins
- this causes
- while
- for more info, refer to:
Mock-Silently- installation is optional
- minimum supported version of Android: 1.0 (API 1)
- standalone application
- purpose:
- to intercept implicit geo-Intents that originate from 3rd-party software, and cannot be directly configured to include custom extras
- behavior:
- add pre-configured values for custom extras to intercepted geo-Intents
- make the updated geo-Intent explicit to open in
Mock-my-GPS - start the updated geo-Intent
- finish without ever showing any visible UI
- recommendation:
- while using 3rd-party software to share locations with
Mock-my-GPSthrough implicit geo-Intents, make this the default app to handle implicit geo-Intents - when done, revoke this Android setting to re-enable the Activity chooser
- while using 3rd-party software to share locations with
englishvs.withAllLanguageTranslationsenglish- does not include translated string resources for any other languages
withAllLanguageTranslations- does include translated string resources for all supported languages
withAospLocationProvidersvs.withGooglePlayServicesFusedLocationProvidervs.withHuaweiMobileServicesFusedLocationProviderwithAospLocationProviders- supplies mock location data to the following Android Open Source Project (AOSP) location providers:
LocationManager.GPS_PROVIDERLocationManager.NETWORK_PROVIDERLocationManager.FUSED_PROVIDER
- supplies mock location data to the following Android Open Source Project (AOSP) location providers:
withGooglePlayServicesFusedLocationProvider- supplies mock location data to the following Android Open Source Project (AOSP) location providers:
LocationManager.GPS_PROVIDERLocationManager.NETWORK_PROVIDERLocationManager.FUSED_PROVIDER
- supplies mock location data to the following Google Play Services location providers:
FusedLocationProviderClientin the Google Location Services (GLS)
- requires that Google Play Services is installed, enabled, and sufficiently recent
- supplies mock location data to the following Android Open Source Project (AOSP) location providers:
withHuaweiMobileServicesFusedLocationProvider- supplies mock location data to the following Android Open Source Project (AOSP) location providers:
LocationManager.GPS_PROVIDERLocationManager.NETWORK_PROVIDERLocationManager.FUSED_PROVIDER
- supplies mock location data to the following Huawei Mobile Services (HMS) location providers:
FusedLocationProviderClientin the HMS Core Location Kit
- requires that Huawei Mobile Services (HMS) is installed, enabled, and sufficiently recent
- supplies mock location data to the following Android Open Source Project (AOSP) location providers:
- Latitude and Longitude coordinates are extracted from each Geo-Intent
- the default behavior of the app is to then:
- display a Dialog to ask the intended "purpose" for the location coordinate extracted from the Geo-Intent
- display an Activity to allow the user to apply any relevant configuration for the intended "purpose" before starting or updating the Service
- Extras in the Intent can be used to streamline this behavior:
- (integer)
purpose1= fixed position2= trip origin3= trip destination4= new bookmark
- (boolean)
silent_update- only works in combination with:
purposehaving a value of either:1or3
- default: FALSE
- only works in combination with:
- (boolean)
force_start- only works in combination with:
purposehaving a value of:1silent_updatehaving a value of: TRUE
- default: FALSE
- only works in combination with:
- (integer)
trip_duration_seconds- only works in combination with:
purposehaving a value of:3silent_updatehaving a value of: TRUE
- default:
60
- only works in combination with:
- (integer)
Example:
- using the app:
Bookmarks - Intent configurations:
- fixed position
- Name =
(fixed position) New York City: Central Park - Action =
android.intent.action.VIEW - Package Name =
com.github.warren_bank.mock_location - Class Name =
com.github.warren_bank.mock_location.ui.GeoIntentActivity - Data URI =
geo:40.78290,-73.96567 - Extras:
- Name =
purpose- Type of Value =
int - Value =
1
- Type of Value =
- Name =
silent_update- Type of Value =
boolean - Value =
TRUE
- Type of Value =
- Name =
- Name =
- trip destination
- Name =
(trip destination) San Francisco: Golden Gate Park - Action =
android.intent.action.VIEW - Package Name =
com.github.warren_bank.mock_location - Class Name =
com.github.warren_bank.mock_location.ui.GeoIntentActivity - Data URI =
geo:37.76914,-122.48301 - Extras:
- Name =
purpose- Type of Value =
int - Value =
3
- Type of Value =
- Name =
silent_update- Type of Value =
boolean - Value =
TRUE
- Type of Value =
- Name =
trip_duration_seconds- Type of Value =
int - Value =
3000
- Type of Value =
- Name =
- Name =
- fixed position
- copyright: Warren Bank
- license: GPL-2.0





