Automate GPS Spoofing with Tasker and GPS JoyStick
Manual GPS spoofing works fine for quick tests, but real power comes from automation. Combine GPS JoyStick's Intent API with Tasker (or MacroDroid) and you can schedule location changes by time of day, trigger routes when you connect to specific Wi-Fi networks, walk waypoints at realistic speeds, and query real-time status for conditional workflows - all running in the background without touching the screen.
What You'll Need
- GPS JoyStick installed (unlocked version recommended)
- Tasker from Google Play ($3.49 one-time purchase)
- GPS JoyStick Pro subscription for advanced intents (Walk, Speed, Favorites, Status Query, and more, see the Pro Intents API Reference) - $4.99/month
- Basic intents (Teleport, Route, Stop) work with the free version
Alternative: If Tasker's interface isn't your style, MacroDroid offers a visual drag-and-drop approach with the same Intent capabilities.
Understanding the Intent API
GPS JoyStick exposes an Intent-based API. Every action - teleporting, starting a route, changing speed - is triggered by sending an Android Intent to the GPS JoyStick service. Tasker (and MacroDroid) can send these intents as actions within automation profiles.
The basics:
- Action: The intent action string (e.g.,
theappninjas.gpsjoystick.TELEPORT) - Extras: Key-value data sent with the intent (e.g.,
lat:37.7749) - Target: Always set to Service
For the complete API reference, see the Pro Intents API documentation.
Recipe 1: Teleport on Schedule
The simplest automation: change your location at specific times.
Use Case
You're testing a delivery app that shows different restaurant menus based on location. You need to check menus in three cities throughout the day.
Tasker Setup
Profile 1: Morning - San Francisco
- Create a Profile → Time → 9:00 AM, Mon-Fri
- Link to a new Task: "SF Location"
- Add Action → Misc → Send Intent
- Action:
theappninjas.gpsjoystick.TELEPORT - Extra:
lat:37.7749 - Extra:
lng:-122.4194 - Target: Service
- Action:
Profile 2: Midday - New York
- Create a Profile → Time → 12:00 PM, Mon-Fri
- Link to a new Task: "NYC Location"
- Add Action → Misc → Send Intent
- Action:
theappninjas.gpsjoystick.TELEPORT - Extra:
lat:40.7128 - Extra:
lng:-74.0060 - Target: Service
- Action:
Profile 3: Evening - Stop
- Create a Profile → Time → 6:00 PM, Mon-Fri
- Link to a new Task: "Stop GPS Mock"
- Add Action → Misc → Send Intent
- Action:
theappninjas.gpsjoystick.STOP - Target: Service
- Action:
Now your device automatically switches between test locations throughout the day, and stops mocking in the evening.
Recipe 2: Trigger Location on Wi-Fi Connect
Change your mocked location based on the Wi-Fi network you're connected to.
Use Case
You're QA testing an app that behaves differently based on geographic region. Your office Wi-Fi should trigger the US test location; your home Wi-Fi should trigger the EU test location.
Tasker Setup
Profile: Office Wi-Fi → US Location
- Create a Profile → State → Net → Wi-Fi Connected
- SSID:
OfficeNetwork
- SSID:
- Link to a new Task: "US Test Location"
- Add Action → Misc → Send Intent
- Action:
theappninjas.gpsjoystick.TELEPORT - Extra:
lat:37.7749 - Extra:
lng:-122.4194 - Target: Service
- Action:
Profile: Home Wi-Fi → EU Location
- Create a Profile → State → Net → Wi-Fi Connected
- SSID:
HomeNetwork
- SSID:
- Link to a new Task: "EU Test Location"
- Add Action → Misc → Send Intent
- Action:
theappninjas.gpsjoystick.TELEPORT - Extra:
lat:48.8566 - Extra:
lng:2.3522 - Target: Service
- Action:
Recipe 3: Walk a Realistic Route (Pro)
Simulate realistic movement along a path at walking or driving speed. This is essential for testing apps that track movement patterns or enforce speed limits.
Use Case
You're testing a fitness tracking app and need to simulate a 5K jogging route.
Tasker Setup
Task: "5K Jog"
Step 1 - Teleport to the start:
- Action:
theappninjas.gpsjoystick.TELEPORT - Extra:
lat:37.7694 - Extra:
lng:-122.4862 - Target: Service
Step 2 - Wait 3 seconds (let the teleport settle):
- Action: Task → Wait → 3 seconds
Step 3 - Start walking the route:
- Action:
theappninjas.gpsjoystick.WALK - Extra:
waypoints:37.7694,-122.4862;37.7700,-122.4830;37.7712,-122.4800;37.7720,-122.4770;37.7735,-122.4740;37.7748,-122.4710;37.7760,-122.4680 - Extra:
speed:10.0 - Extra:
teleport:false - Target: Service
The speed:10.0 extra sets the movement to 10 km/h - a comfortable jogging pace. GPS JoyStick will interpolate between waypoints at that speed, creating smooth, realistic movement.
Speed Reference
| Activity | Speed (km/h) | Extra Value |
|---|---|---|
| Walking | 3-5 | speed:4.0 |
| Jogging | 8-12 | speed:10.0 |
| Cycling | 15-25 | speed:20.0 |
| Driving (city) | 30-60 | speed:40.0 |
| Driving (highway) | 80-120 | speed:100.0 |
Recipe 4: Conditional Workflows with Status Query (Pro)
The STATUS intent lets you build conditional logic - check if a route is finished before starting the next one, monitor progress, or react to the current state.
Use Case
You're running a sequence of test routes and want each one to finish before the next starts.
Tasker Setup
Profile: Receive Status Response
- Create a Profile → Event → System → Intent Received
- Action:
theappninjas.gpsjoystick.STATUS_RESPONSE
- Action:
- Link to a Task: "Check Route Status"
- In the task, the response extras are available as Tasker variables:
%is_route_active- whether a route is running%route_remaining- waypoints left%is_running- whether the service is active
Task: "Run Test Sequence"
Step 1 - Start first route:
- Send Intent:
theappninjas.gpsjoystick.ROUTE, Extra:name:Route A
Step 2 - Wait 5 minutes (estimated route duration):
- Wait: 300 seconds
Step 3 - Query status:
- Send Intent:
theappninjas.gpsjoystick.STATUS
Step 4 - The STATUS_RESPONSE profile fires and checks %is_route_active:
- If
false→ start Route B - If
true→ wait and re-check (use Tasker's Goto action to loop back)
Recipe 5: Generate Random Routes
The GENERATE intent creates a random or circular route from the current position and starts walking it immediately. Great for long-duration testing where you need continuous movement.
Tasker Setup
Task: "Random Walk"
Step 1 - Set starting position:
- Send Intent:
theappninjas.gpsjoystick.TELEPORT - Extra:
lat:37.7749,lng:-122.4194
Step 2 - Wait for teleport:
- Wait: 2 seconds
Step 3 - Generate circular route:
- Send Intent:
theappninjas.gpsjoystick.GENERATE - Extra:
mode:1(circle) - Extra:
marker_count:20 - Extra:
offset:100.0(100 meters between points) - Target: Service
This creates a circular path with 20 waypoints, each 100 meters apart, and immediately starts walking it. The route loops by default.
Recipe 6: Record and Replay Routes
Record a route by walking it manually, then replay it later for repeatable test runs.
Tasker Setup
Task: "Start Recording"
- Send Intent:
theappninjas.gpsjoystick.RECORD_START
Task: "Add Waypoint" (trigger manually or on timer)
- Send Intent:
theappninjas.gpsjoystick.RECORD_ADD
Task: "Save Recording"
- Send Intent:
theappninjas.gpsjoystick.RECORD_STOP - Extra:
name:QA Test Route v2
The saved route can then be replayed anytime using the ROUTE intent.
Downloadable Tasker Profile
We've pre-built a Tasker profile with the most common GPS JoyStick tasks. Download it, import into Tasker, and customize the coordinates for your testing needs.
How to Import
- Download the
.tsk.xmlfile to your Android device - Open Tasker
- Long-press the Profiles tab
- Select Import
- Navigate to the downloaded file
- The profile includes tasks for: Teleport, Start Route, Walk Waypoints (Pro), Stop, and Status Query (Pro)
MacroDroid Alternative
If you prefer a visual interface over Tasker's text-based configuration, MacroDroid can send all the same intents using its Fire Intent action. The setup is nearly identical - just use the MacroDroid action builder instead of Tasker's Send Intent.
See the MacroDroid Integration Guide for detailed setup instructions.
Tips for Reliable Automation
- Always add a short wait (2-3 seconds) between intents - gives GPS JoyStick time to process each command
- Disable battery optimization for both Tasker AND GPS JoyStick - both apps need to run in the background
- Test manually first - verify each intent works individually before chaining them in a profile
- Use realistic speeds - teleporting between distant locations instantly can trigger movement-pattern flags in apps that enforce realistic travel times; use WALK with appropriate speeds for gradual movement
- Monitor with STATUS - use the Status Query intent to confirm your automation is working as expected
Further Reading
- Tasker Integration Reference - Quick-reference docs for all Tasker intent actions and extras
- Pro Intents API Reference - Complete documentation for all intents, extras, and responses
- ADB Commands Cheatsheet - Control GPS JoyStick from your computer terminal
- Download - Get the unlocked APK directly