Android screenshot utility optimized for AI agent consumption. Takes screenshots that are small enough to upload to LLMs without wasting tokens on unnecessary pixel data.
Stock Android screenshots are 2-5MB PNGs at full resolution. AI agents don't need that — they need just enough visual context to understand what's on screen. SShot produces ~30-40KB WebP images (720px wide, lossy quality 65) that are perfectly readable by vision models while being 100x smaller.
Each filename includes the foreground app's package name and a timestamp, giving agents useful context without needing to parse the image:
sshot_com.brave.browser_2026-03-09_18-34-48.webp
- Optimized capture pipeline: Screenshot → downscale to 720px width → WebP lossy @ quality 65
- Foreground app detection: Package name embedded in filename via UsageStatsManager
- Multiple triggers:
- ADB broadcast (primary dev workflow)
- Floating overlay button (draggable, tap to capture, long-press to stop)
- Quick Settings tile
- Share sheet: Share screenshots directly from the capture preview
- Local script:
sshot.shcaptures via ADB and saves optimized screenshots to your dev machine
- Android device running API 31+ (tested on Pixel 6 Pro, Android 15)
- ADB connected
cwebpinstalled on your machine (for the local script):brew install webp
./gradlew installDebug- Open the app and tap Start to grant screen capture permission
- Grant Usage Access in Settings → Apps → Special app access → Usage access → SShot
- Enable SShot Capture in Settings → Accessibility → Installed apps → SShot Capture
# Take a screenshot (saved on device)
adb shell am broadcast -a com.sshot.CAPTURE -n com.sshot/.CaptureReceiver
# Take and immediately share
adb shell am broadcast -a com.sshot.CAPTURE_AND_SHARE -n com.sshot/.CaptureReceiver
# Stop the capture service
adb shell am broadcast -a com.sshot.STOP -n com.sshot/.CaptureReceiver# Takes a screenshot and saves an optimized WebP to ./screenshots/
./sshot.shOnce the capture service is running and accessibility is enabled:
- Tap the camera icon to capture
- Drag to reposition
- Long-press (1 second) to stop the service and hide the overlay
Add the SShot tile to your Quick Settings panel for one-tap capture.
Screenshots are saved to the device at:
/storage/emulated/0/Android/data/com.sshot/files/SShot/
Pull them to your machine:
adb shell ls /storage/emulated/0/Android/data/com.sshot/files/SShot/
adb pull /storage/emulated/0/Android/data/com.sshot/files/SShot/ ./screenshots/- ScreenCaptureService: Foreground service holding the MediaProjection session. Captures frames via VirtualDisplay + ImageReader, downscales, and encodes to WebP.
- ShotAccessibilityService: Runs in a separate process (
:accessibility). Manages the floating overlay button and screenshot preview. Polls a flag file to sync with the capture service lifecycle. - CaptureReceiver: BroadcastReceiver handling ADB triggers and stop commands.
- ShotTileService: Quick Settings tile integration.
MIT