Skip to content

Automate GPS Spoofing with Tasker and GPS JoyStick

· The App Ninjas · 8 min read
automation tasker pro

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

  1. Create a ProfileTime → 9:00 AM, Mon-Fri
  2. Link to a new Task: "SF Location"
  3. Add Action → MiscSend Intent
    • Action: theappninjas.gpsjoystick.TELEPORT
    • Extra: lat:37.7749
    • Extra: lng:-122.4194
    • Target: Service

Profile 2: Midday - New York

  1. Create a ProfileTime → 12:00 PM, Mon-Fri
  2. Link to a new Task: "NYC Location"
  3. Add Action → MiscSend Intent
    • Action: theappninjas.gpsjoystick.TELEPORT
    • Extra: lat:40.7128
    • Extra: lng:-74.0060
    • Target: Service

Profile 3: Evening - Stop

  1. Create a ProfileTime → 6:00 PM, Mon-Fri
  2. Link to a new Task: "Stop GPS Mock"
  3. Add Action → MiscSend Intent
    • Action: theappninjas.gpsjoystick.STOP
    • Target: Service

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

  1. Create a ProfileStateNetWi-Fi Connected
    • SSID: OfficeNetwork
  2. Link to a new Task: "US Test Location"
  3. Add Action → MiscSend Intent
    • Action: theappninjas.gpsjoystick.TELEPORT
    • Extra: lat:37.7749
    • Extra: lng:-122.4194
    • Target: Service

Profile: Home Wi-Fi → EU Location

  1. Create a ProfileStateNetWi-Fi Connected
    • SSID: HomeNetwork
  2. Link to a new Task: "EU Test Location"
  3. Add Action → MiscSend Intent
    • Action: theappninjas.gpsjoystick.TELEPORT
    • Extra: lat:48.8566
    • Extra: lng:2.3522
    • Target: Service

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: TaskWait → 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

ActivitySpeed (km/h)Extra Value
Walking3-5speed:4.0
Jogging8-12speed:10.0
Cycling15-25speed:20.0
Driving (city)30-60speed:40.0
Driving (highway)80-120speed: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

  1. Create a ProfileEventSystemIntent Received
    • Action: theappninjas.gpsjoystick.STATUS_RESPONSE
  2. Link to a Task: "Check Route Status"
  3. 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.

Download Tasker Profile XML

How to Import

  1. Download the .tsk.xml file to your Android device
  2. Open Tasker
  3. Long-press the Profiles tab
  4. Select Import
  5. Navigate to the downloaded file
  6. 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

  1. Always add a short wait (2-3 seconds) between intents - gives GPS JoyStick time to process each command
  2. Disable battery optimization for both Tasker AND GPS JoyStick - both apps need to run in the background
  3. Test manually first - verify each intent works individually before chaining them in a profile
  4. 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
  5. Monitor with STATUS - use the Status Query intent to confirm your automation is working as expected

Further Reading