Etap 19: testy - TYLKO na prawdziwym telefonie
Wymagania sprzętowe: aparat i GPS nie działają na standardowym emulatorze. Podłącz telefon przez AI Companion. Udziel zgód na: lokalizację, aparat (i ewentualnie pamięć - depending od wersji Androida).
Test 1 (start): Uruchom pustą bazę → lista pusta, licznik 0, brak crasha.
Test 2 (zapis bez zdjęcia): Wpisz tekst → Zapisz → notatka na liście, sciezkaZdjecia pusta.
Test 3 (pełny wpis): Tekst → Zrób zdjęcie → potwierdź GPS (liczby ≠ 0) → Zapisz → 4 pola kompletne.
Test 4 (trwałość): Zamknij aplikację całkowicie → uruchom ponownie → lista jak przed zamknięciem (TinyDB przeżył!).
Test 5 (podgląd): Kliknij pozycję na liście → dialog z treścią + miniatura się zmienia.
Test 6 (usuwanie): Usuń notatkę → znika z listy → restart → nadal nie ma (zapisano do TinyDB).
Test 7 (walidacja): Puste txtTresc + Zapisz → ostrzeżenie, baza nietknięta.
Test 8 (wyczyść): Wyczyść wszystko → dialog TAK → lista pusta po resecie.
Lista kontrolna
- ✓ Tekst + zdjęcie + GPS zapisują się jako jeden wpis
- ✓ Lista poprawnie się odświeża (długość zgodna z bazą)
- ✓ Dane PRZETRWAJĄ zamknięcie aplikacji (TinyDB)
- ✓ Podgląd wskazuje tę samą notatkę, którą kliknięto
- ✓ Usuwanie i czyszczenie działają z potwierdzeniem
- ✓ Walidacja pustego tekstu blokuje zapis
Czego uczy to zadanie
- TinyDB - trwałe przechowywanie pary klucz-wartość na urządzeniu.
- Listy zagnieżdżone - modelowanie rekordów jako list o stałej kolejności pól.
- Pętle for + indeksowanie od 1 - przeglądanie kolekcji.
- Zdarzenia aplikacji zewnętrznych (Camera.AfterPicture) i czujników (LocationChanged).
- Cykl CRUD: Create (zapisz), Read (odśwież/podgląd), Update (nadpisz bazę), Delete (usuń).
Rozszerzenia: (a) pole DATY w każdym wpisie (clock.Now), (b) wyszukiwarka - filtruj listę po fragmencie tekstu, (c) eksport listy jako CSV (Web.StringToFile / Share), (d) mapa - WebViewer z OpenStreetMap i pinezką na współrzędnych, (e) Podcast głosowy - zamiast tekstu nagrywaj dźwięk (SoundRecorder) jako czwarty element wpisu.