- Hydepark: Czytaj fantastyka.pl z apki, czyli "Poczytaj mi tato" 2.0

Hydepark:

inne

Czytaj fantastyka.pl z apki, czyli "Poczytaj mi tato" 2.0

W Google Play umieściłem właśnie pewną aplikację. Może ona mieć jedną lub wiele zakładek (zupełnie jak przeglądarka www), z których każda może odwoływać się do tych samych tekstów, ale inaczej je sortować albo filtrować (czyli np. na jednej możemy całą poczekalnię z fantastyka.pl, a na drugiej tylko poczekalnię z ulubionymi autorami).

 

     

 

Motyw czarny dostępny jest bodajże od Android 10 (nie implementowałem własnego) i włączalny w ustawieniach samego systemu Android, strony dostępne offline (wcześniej czytane i załadowane) są wyróżnione kolorem białym lub niebieskim. Po kliknięciu na tekst możemy go czytać (przy czym aplikacja pamięta, do którego miejsca to robiliśmy, i wraca tam przy kolejnym otwarciu).

 

Ustawienia

 

Pod hamburger menu (trzy kropki po prawej stronie pola Szukaj) mamy różne opcje dla danej zakładki:

 

  

 

Można sobie tu przede wszystkim wybrać, co chcemy czytać w danej zakładce (który serwis). Do tego istnieje możliwość automatycznej synchronizacji w tle (bez tego należy użyć gestu swype, czyli przeciągnąć palcem z samej góry listy w dół) albo wymuszenia na aplikacji wczytania spisu treści ze wszystkich stron (normalnie aplikacja czyta tylko dwie pierwsze strony, gdzie zazwyczaj dzieje się najwięcej). Dostępne są też dodatkowe możliwości filtrowania po tagach (to ta ostatnia linia przy każdej pozycji) lub autorach:

 

 

Czerwone / zielone

 

Każdą pozycję na liście tekstów można przesunąć w lewo lub prawo i przypisać do czerwonej lub zielonej kategorii:

 

 

Takie strony widzimy wtedy po wybraniu jednej z dwóch pierwszych opcji w hamburger menu (Pokaż zielone lub pokaż czerwone). Żeby wrócić do "normalnej" listy, wystarczy ponownie wybrać opcję w hamburger menu i wtedy zostanie odhaczona. Stronę w zielonej lub czerwonej kategorii można przesunąć do kategorii "normalnej" lub przeciwnej przesuwając w bok.

Do czego to może się przydać? Czerwona kategoria to mogą być teksty złe, zielona dobre. Albo zielona do kolejka do czytania, a czerwona to przeczytane.

 

Szukanie

 

Każdą zakładkę można przeszukiwać – teksty jest szukany w tytule, autorach i tagach (obecnie ta część wymaga polskich liter) albo w pobranych tekstach (tu nie musimy podawać polskich liter, a aplikacja i tak je dopasuje).

 

  

 

Znalezione dopasowane teksty są podświetlane na zielono.

 

EPUB

 

Pobrane teksty z danej zakładki można eksportować do EPUB, albo z powrotem wczytać. Konwerter jest trochę inny niż w poprzednich projektach, o których piszę poniżej.

 

 

Zakładka szukania

 

To jest funkcjonalność z wersji 1.0 aplikacji. Zapytanie wysyłane jest do wybranych stron, a aplikacja próbuje scalić wyniki, czasem z lepszym, a czasem gorszym rezultatem.

 

  

 

Uprawnienia

 

W manifeście są trzy: INTERNET, ACCESS_NETWORK_STATE i WRITE_EXTERNAL_STORAGE. Pierwsze dwa potrzebne są do dostępu do sieci (pobierania plików), trzeci wymagany jest, gdy aplikacja chce znaleźć folder Downloads (tego trzeciego wymagania nie trzeba przyznawać; bez niego link do plików EPUB będą otwierane w przeglądarce www zamiast w systemowym managerze pobierania).

 

Prywatność danych

 

Sam jako autor nic nie zbieram.

Gdzie możliwe, używam https (czyli praktycznie wszędzie).

W zakładce Search aplikacja wysyła zawartość zapytania do wybranych stron, a w zakładce z czytaniem musi odpytywać strony z indeksami i strony z tekstami (czy też obrazkami do tekstów). Myślałem, żeby dodać obsługę TOR, i jeśli będzie zainteresowanie...

 

Historia

 

W 2017 opublikowałem malutkę aplikację, która na Androidzie zadawała pytanie kilku stronom i łączyła wyniki wyszukiwania. Więcej na ten temat można było przeczytać m.in. w tekście Litwo ojczyzno moja... czyli o Januszach biznesu, ebookach i kulturze słów kilka.

W tym samym roku opublikowałem kod aplikacji BooksAPIExample, która wyszukiwała książki w Google Books, rok później nie tylko sklonowałem repozytorium (już nie mogę sobie przypomnieć po co), ale też przygotowałem aplikację TasksDemo pokazującą różne zabawy z elementami w Androidzie.

Luty 2020 to początek skryptu do generacji plików EPUB z fantastyka.pl i fantastykapolska.pl (początkowo w PHP, a od sierpnia wersja dla fantastyka.pl w Java Script).

Około kwietnia-maja 2020 zaproponowałem kod enginu, który mógłby napędzać serwis fantastyka.pl (nodejs, lekkie komponenty, kod źródłowy, itp.). Dyskusję o tym można znaleźć np. tutaj, kod też był stosunkowo dojrzany.

W 2021 "Poczytaj mi tato" 1.0 trafił na GitHub, a w lato 2022 dodaję funkcję czytania tekstów z fantastyka.pl i opowi.pl, jak również możliwość wyszukiwania, zakładkowania, eksportu i importu EPUB.

 

Co dalej?

 

Zależy od użytkowników. Obecna wersja jest dosyć dojrzała, ale... trzeba ją trochę traktować jak demo preview. Jeżeli będzie zainteresowanie, będę całość oczywiście rozwijał, i dodawał to, co np. było całkiem zrobione w enginie dla fantastyka.pl (komentarze, itp.). Czy tak czy inaczej, kod jest już dostępny... i zawiera ostatnie kontrolki androidx, etc. (nie jest to jakaś prehistoria).

Komentarze

obserwuj

@Krokus – tutaj appka marcina

"Świryb" (Bailout) | "Fisholof." (Cień Burzy) | "Wiesz, jesteś jak brud i zarazki dla malucha... niby syf, ale jak dzieciaka uodparnia... :D" (Emelkali)

Android v. 11 i aplikacja spada po obróceniu ekranu poziomo na telefonie. Jak ją się odpali w poziomie, to spada po obróceniu do pionu.

Da się z tym żyć (nie kręcić!), ale ciekawostka jest.

 

Najważniejsze: gratulacje i wyrazy podziwu!

Pokój – szczęśliwość; ale bojowanie Byt nasz podniebny

Wersja 2.0.1 – 4.2023

  1. zablokowanie gestów lewo/prawo w różnych miejscach – przełączanie między zakładkami robione jest przez kliknięcie na nazwie zakładki (naprawia to scrollowanie góra/dół)
  2. zmiana layoutu – przy scrollowaniu w dół chowane są nazwy zakładek (można czytać na pełnym ekranie)
  3. wsparcie dla czarnego trybu w najnowszym Androidzie
  4. refaktoring kodu
  5. wsparcie dla trybu multi-window (możliwość pokazywania na ekranie wraz z drugą zakładką) i zmiany orientacji – poprawka błędu z konstruktorem fragmentów
  6. po kliknięciu na powiadomienie jesteśmy przeniesieni do aplikacji
  7. dodane uprawnienie POST_NOTIFICATIONS (wymagane, żeby pokazywać powiadomienia)
  8. pobieranie plików w Android 13+ działa (inny model uprawnień)
  9. poprawka różnych A resource was acquired at attached stack trace but never released.
  10. poprawka związana z wolnym czytaniem obrazków (dodatkowo widać postęp)

Uwagi

  1. aplikacja nie zawsze scrolluje do ostatnio czytanego miejsca (prawdopodobnie związanie ze NestedScrollView)
  2. aplikacja nie zbiera żadnych danych o urządzeniu czy użytkowniku (ani nigdzie ich nie wysyła)
  3. TODO czerwone teksty (niewidoczne na serwerze)
  4. TODO up down przy szukaniu – FloatingActionButton
  5. TODO TOR
  6. TODO Google Books ?
  7. TODO sortowanie szukania ?
  8. TODO sync z szukaniem systemowym ?

Obecnie wymagane uprawnienia

1. POST_NOTIFICATIONS – powiadomienia (Android >= 13)

  1. INTERNET – to chyba oczywiste
  2. ACCESS_NETWORK_STATE – żeby móc czytać pliki ze stron w tle po włączeniu funkcji przez użytkownika
  3. WRITE_EXTERNAL_STORAGE – bez niego nie można pobrać pliku EPUB (Android < 13)

 

Wersja 2.1 – 7.5.2023

  1. poprawna obsługa sytuacji, gdy brak internetu
  2. zmieniona ważność powiadomień na LOW (nie wibrują)
  3. lepsza obsługa HTML Entity w tytułach
  4. info o punktach do bilbioteki na fantastyka.pl
  5. opcja pozwalająca chować Navigation Bar (większa ilość miejsca na ekranie dla aplikacji szczególnie w starszym Androidzie) – po jej włączeniu Navigation Bar musi być "wysunięty" z dołu ekranu (opcja po zmianie wymaga restartu apki)
  6. długi klik na pozycji na liście otwiera ją w Chrome (łatwo można np. dodać komentarz)
  7. wyłączenie zbierania domyślnych metryk przez Google (WebView.MetricsOptOut) – więcej https://developer.android.com/develop/ui/views/layout/webapps/managing-webview#metrics
  8. pokazywanie informacji, jaką część tekstu przeczytano (na razie Snackbar)
  9. nowa kategoria pomarańczowa tekstów – po włączeniu opcji w zakładce i dojściu do końca tekstu jest on automatycznie przesuwany do pomarańczowych (po wyłączeniu opcji, jeżeli ktoś chce ręcznie przesunąć tekst do czerwonych lub zielonych, czyli np. dobrych i złych, może robić to ręcznie jak wcześniej)
  10. opcja pozwalająca włączyć blokowanie wyłączania ekranu (po zmianie wymaga restartu apki)
  11. opcja wyboru wielkości czcionki czytania

Wersja 2.1.1 – 29.8.2023

 

  1. poprawa błędu z przewijaniem stron
  2. poprawa błędu z odświeżaniem stron
  3. nowy Gradle

Obecnie czeka na akceptację w Google Play

Hej, gratulacje i super pomysł! Jeżeli byłby dostępny plik apk, lub znalazło się w APKPure, chętnie wypróbowałbym na czytniku :)

Żegnaj! Życzę Ci powodzenia, dokądkolwiek zaniesie Cię los!

Ale było by cudnie, gdyby było na androida. Czytanie na telefonie nie jest może najwygodniejszą formą, ale czasem w autobusie czy innym pociągu byłoby to w sam raz.

XXI century is a fucking failure!

To jest na androida, tylko trzeba mieć jak zainstalować.

Żegnaj! Życzę Ci powodzenia, dokądkolwiek zaniesie Cię los!

Nowa Fantastyka