An Android app that automates Pokéstop spinning in Pokémon GO. It uses Android's MediaProjection API to watch the screen and an AccessibilityService to inject swipe gestures — no root, no network interception, no game file modification.
Warning
Automating game actions may violate Niantic's Terms of Service. Use at your own risk.
- On your Android device, open Settings → Security (or Apps → Special app access → Install unknown apps) and allow installs from your browser or file manager.
- Download the latest APK from the Releases page.
- Open the downloaded file and tap Install.
git clone https://github.com/joeyparrish/backpacker.git
cd backpacker
./gradlew assembleDebug
# APK is at app/build/outputs/apk/debug/app-debug.apkInstall via ADB:
adb install app/build/outputs/apk/debug/app-debug.apkOpen Backpacker. The Backpacker Setup section at the top is expanded automatically when any step is incomplete (collapsed when all are done — tap the heading to toggle it).
Work through the three setup steps:
- Enable Gesture Service — tap the button to open Accessibility Settings, find Backpacker Gesture Service, and enable it.
- Allow Notifications — required to keep the background service alive.
- Disable Battery Optimization — prevents Android from killing the service while the screen is off.
Once all steps are done, toggle Overlay enabled in the Automation section. A system dialog will ask for screen-capture permission — tap Start now. A small floating button will appear on screen.
Open Pokémon GO and use the floating button to control automation:
| Button state state | Meaning |
|---|---|
| Cyan pokestop icon (dim) | Idle — not running |
| Red house icon | Stationary mode — scans once per minute |
| Red car icon | Moving mode — scans once per 2 seconds |
Tap the button to cycle through states. Drag it to reposition.
When a Pokéstop disc is detected, the app taps it, swipes the spinner, and taps back to the map automatically. Session spin count and a lifetime total are tracked and shown in the main app.
All debug modes are mutually exclusive. Enabling one clears the others. Debug flags are cleared when the overlay is turned off.
- Debug scan — captures one screenshot, highlights detected Pokéstop disc positions with bounding boxes, shows the result as a full-screen overlay. Useful for tuning detection thresholds.
- Debug spinner — captures one screenshot and reports whether the spinner ring is cyan (ready), purple (already spun), or absent (wrong screen).
- Debug passenger — captures one screenshot and reports whether the speed-warning dialog's green pill button is detected. Useful for checking false-positive rates across different game screens.
- Save screenshots for failures — saves a PNG to
Pictures/Backpackerwhenever the engine taps a disc but finds nothing recognisable on screen (wrong tap target). Keeps the last 30 files.
The first three modes disable "moving" mode (the button only offers "idle" and "stationary") and are one-shot: one tap captures one screenshot, then the overlay resets to idle.
adb logcat | grep Backpacker
- Android 8.0+ (API 26)
- Pokémon GO installed
MIT — Copyright 2026 Joey Parrish