← ClaudeAtlas

android-location-serviceslisted

Use this skill whenever building or reviewing an Android feature that needs the device's current location — permission requesting, FusedLocationProviderClient usage, reverse geocoding (coordinates to place name), or graceful fallback when location is denied/unavailable. Trigger for ANY domain that uses "current location" as one input among others — weather, delivery/ride tracking, local search, fitness route logging, store locators — not just navigation apps. Also trigger on mentions of "use my location", "current location", "GPS", "FusedLocationProviderClient", "reverse geocode", "location permission", or "location not available" in an Android/Kotlin context. This is a feature/capability skill (the pattern for HOW to request, fetch, resolve, and degrade), not a tech-stack tutorial — pair it with whatever DI/architecture the project already uses.
rajedev/AIWeatherApp · ★ 0 · Code & Development · score 62
Install: claude install-skill rajedev/AIWeatherApp
# Android Location Services: Request, Fetch, Resolve, Degrade Location is almost never the *only* way into a feature — it's one convenience path alongside a manual alternative (search, saved list, typed address). Every location feature in this skill's scope should be designed so the manual path works with zero location permission granted, ever. Location makes the app faster/more convenient; it should never be a hard dependency for core functionality. ## Core mental model ``` Cold start / feature entry point │ ▼ Explicit choice: "Use current location" vs. manual alternative │ (never auto-fire the permission dialog on app launch) ▼ User taps "Use current location" │ ▼ checkSelfPermission() ── re-checked EVERY time, never cached as app state │ ├── not granted → request → user denies → land on manual path │ → user grants → continue below │ ▼ One-shot getCurrentLocation() (suspend, not a continuous stream) │ ├── fails (GPS off / no fix / timeout) → inline error: Retry / Use manual path │ (show any cached prior result underneath, don't blank the screen) │ ▼ Reverse geocode lat/lon → place name (with fallback chain, see below) │ ▼ Feed resolved place into the same data path manual entry would have used (one downstream code path regardless of how the place was