Widgeten kunne ikkje hente posisjonsdata i bakgrunnen fordi Android avgrenser GPS-tilgang for bakgrunnsprosessar (BroadcastReceiver) frå og med Android 8+. Både FusedLocationProviderClient og LocationManager returnerte null umiddelbart ved aktiv førespurnad frå bakgrunnen. Løysinga er å lagre siste GPS-posisjon til SharedPreferences kvar gong MainActivity får ei ny posisjonsfiks. Widgeten og WidgetUpdateWorker les denne som siste utveg etter at system-API-ar har feila. Endringane i detalj: Widget (ShelterWidgetProvider): - Brukar goAsync() + bakgrunnstråd for asynkron oppdatering - Prøver FusedLocationProvider (Play Services), så LocationManager (AOSP), og til slutt SharedPreferences som fallback - Ny metode requestUpdateWithLocation() for å sende posisjon via intent extras (unngår separate posisjonsbuffertar) - Viser tidsstempel (HH:mm) for å sjå når widgeten sist vart oppdatert WidgetUpdateWorker: - Aktivt ber om ny posisjonsfiks (getCurrentLocation) i staden for berre å lese passiv buffer - Sender oppnådd posisjon direkte til widgeten via broadcast - Fallback til SharedPreferences viss aktiv førespurnad feilar - Ny runOnce()-metode for eingongsoppdatering MainActivity: - Lagrar GPS-posisjon til SharedPreferences ved kvar oppdatering (saveLastLocation) så widgeten kan bruke den i bakgrunnen Relatert: #3 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| src/main | ||
| build.gradle.kts | ||
| proguard-rules.pro | ||