# Polassis [Oświadczenie autora (29 kwietnia 2018)](https://github.com/maksgraczyk/Polassis/blob/master/STATEMENT.pl-PL.md) [Przeczytaj po angielsku / Read in English](https://github.com/maksgraczyk/Polassis/blob/master/README.md) Osobisty asystent głosowy dla urządzeń z Androidem. Język polski jest obecnie jedynym wspieranym językiem (zarówno w interfejsie użytkownika, jak i w rozpoznawaniu poleceń). ## Licencja (C) 2018 Maksymilian Graczyk. Polassis jest opublikowany na licencji GNU General Public License v3.0. Więcej szczegółów w pliku LICENSE. Każda praca chroniona prawami autorskimi uwzględniona w programie jest używana w zgodzie z odpowiednimi licencjami. Prace te należą do ich autorów. Więcej szczegółów w sekcji "Użyta twórczość osób trzecich". ### Wkład do kodu Jeżeli chcesz wnieść swój wkład do kodu, nie ma problemu: po prostu sforkuj ten projekt na swoje konto GitHub i nanieś potem odpowiednie zmiany. **Niestety, jakikolwiek bezpośredni wkład w oryginalny kod (z wyjątkiem mojego wkładu) jest niemożliwy ze względów prawnych (chciałbym uniknąć problemów z prawami autorskimi).** ## Wsparcie Ten projekt jest w tym momencie zamrożony, w związku z czym zapewniam bardzo ograniczone wsparcie. Nie odpowiem na wiadomości e-mail z komentarzami zarówno o stabilnych, jak i rozwojowych wersjach (z wyjątkiem pilnych spraw od osób niepełnosprawnych i kwestii praw autorskich / uznania czyjejś pracy: zobacz "Użyta twórczość osób trzecich"). Na wszystkie inne wiadomości postaram się odpowiedzieć maksymalnie w ciągu 10 dni. Jeżeli znajdziesz jakiekolwiek błędy lub masz jakiekolwiek sugestie, możesz je zaraportować w części "Issues", ale nie mogę zagwarantować odpowiedzi na raporty w rozsądnym czasie. Jeżeli chcesz się ze mną skontaktować (pamiętaj o powyższej informacji), mój adres to max.graczyk+polassis@gmail.com. Jakiekolwiek poprzednie adresy e-mail, z jakimi można było się spotkać (w domenach outlook.com i polassis.pl), **nie są już aktualne**. ## Instrukcja instalacji Udostępniony kod źródłowy jest najnowszą wersją **rozwojową**, która nie ma żadnych reklam ani możliwości dotacji. Proszę zwrócić uwagę na to, że błędy, puste ekrany i niedokończone funkcje są tutaj *normalne*. Jednakże, z racji tego, że celowałem w naprawienie głównych błędów występujących w najnowszej wersji stabilnej (1.0.7) przed opublikowaniem kodu źródłowego, wersja rozwojowa **może** działać lepiej na twoim urządzeniu niż wersja stabilna. Jeśli tak będzie u ciebie, to gratuluję szczęścia! Wersja rozwojowa działa na Androidzie 4.1+. Niektóre stare wersje beta i wersje stabilne są również dostępne do pobrania jako pliki APK (zobacz: Prekompilowane wydania). Wersje Androida wspierane przez te wydania są wspomniane w ich opisie. Wymagane uprawnienia są omówione pod adresem https://pastebin.com/cv7r22Za. ### Z wykorzystaniem Android Studio Jeżeli programowanie na Androida jest tobie znajome i chcesz pracować z kodem źródłowym, to jest najszybsza i zalecana metoda. W przeciwnym razie zobacz "Prekompilowane wydania". Poniższe instrukcje mają zastosowanie do Android Studio 3.0.1, ale powinny też bez problemu działać w innych wersjach (konieczne mogą być małe zmiany, proszę odnieść się do instrukcji lub zasobów online dla twojej wersji IDE w razie potrzeby). 1. Sklonuj to repozytorium: `git clone https://github.com/maksgraczyk/Polassis` 2. Otwórz w Android Studio folder "Polassis" jako projekt. 3. Poczekaj aż wszystkie wymagane zasoby zostaną przygotowane. 4. Możesz już pracować z kodem: miłej zabawy! ### Prekompilowane wydania **AKTUALIZACJA (5 maja 2018): Wszystkie prekompilowane (gotowe) wydania, do których mam dostęp, są już dostępne do pobrania.** Dostępne są również prekompilowane wydania, które mogą zostać bezpośrednio zainstalowane na urządzeniach z Androidem bez kompilowania kodu źródłowego. Można je pobrać jako pliki APK w części "Releases". Wersja rozwojowa jest tu uwzględniona. Twoje urządzenie musi zezwalać na instalację aplikacji z nieznanych źródeł: możesz zmienić to zachowanie w ustawieniach Androida. ## Jak korzystać Interfejs użytkownika jest zaprojektowany tak, aby był jak najprostszy do użytku i jak najprzystępniejszy. Aby zacząć, dotknij zielony przycisk mikrofonu na dole ekranu: kiedy zmieni on kolor na czerwony, powiedz polecenie. Systemowa usługa rozpoznawania mowy (z reguły Google) przetworzy twój głos i zwróci tekst, który zostanie zinterpretowany przez aplikację. Alternatywnie wprowadź polecenie ręcznie (używając dużego pola tekstowego obok przycisku mikrofonu) i naciśnij ENTER lub dotknij przycisk mikrofonu. Jeśli chcesz uzyskać dostęp do ustawień, dotknij ikonę koła zębatego w lewym dolnym rogu i wybierz "Ustawienia". Jak wspomniałem we wstępie, jedynie język polski jest obsługiwany. ### Funkcje Oto lista czynności, jakie może/mogłaby wykonać wersja rozwojowa Polassisa: * Powiedzenie określonego tekstu (np. "powiedz ja mam kota") * Przeczytanie ostatnio odebranego SMS-a (np. "przeczytaj ostatniego SMS-a") * Ustalenie, kto ostatnio dzwonił (np. "kto do mnie ostatnio dzwonił") * Ustalenie, do kogo ostatnio dzwoniłeś(aś) (np. "do kogo dzwoniłem") * Ustalenie, jakie było ostatnie połączenie (np. "ostatnie połączenie") * Napisanie wiadomości e-mail (np. "wyślij e-maila") * Notatki: * Dodawanie (np. "stwórz notatkę") * Edytowanie (np. 'zmień notatkę "Test"') * Usuwanie (np. 'usuń notatkę "Test"') * Przeczytanie (np. 'czytaj notatkę "Lista zakupów"') * Pokazanie listy notatek (np. "pokaż wszystkie notatki") * Napisanie SMS-a (np. "napisz SMS-a do Jarka") * Zrobienie zdjęcia (np. "wykonaj zdjęcie") * Pobranie prognozy pogody (np. "jaka pogoda za tydzień Berlin") (**wymagany jest klucz Dark Sky API: nie jest on zapewniony w kodzie, zobacz app/src/main/res/values/constants.xml**) * Minutnik: * Ustawianie (np. "odmierz 3 godziny 30 minut") * Wstrzymywanie/Wznawianie (np. "zatrzymaj minutnik", "wznów minutnik") * Sprawdzanie pozostałego czasu (np. "ile jeszcze mam czasu") * Dzwonienie (np. "chcę zadzwonić pod numer 123456") * Wykonywanie obliczeń matematycznych (np. "siedem do kwadratu przemnożone przez cztery podzielić na sześć") * Ustalanie dnia tygodnia określonej daty (np. "który to był 3 stycznia 2015 roku") * Kontrolowanie odtwarzacza muzyki: * Wstrzymywanie/Wznawianie (np. "wznów odtwarzanie", "pauza") * Powtarzanie (np. "odtwórz jeszcze raz") * Następny utwór (np. "kolejna piosenka") * Poprzedni utwór (np. "wróć do poprzedniej muzyki") * Odtwarzanie muzyki na Spotify (np. "odtwórz Too Many Broken Hearts") (**niezaimplementowane**) * Włączanie/Wyłączanie latarki (np. "włącz latarkę", "nie chcę latarki") * Przełączanie Wi-Fi/Bluetooth (np. "włącz Wi-Fi", "włącz Bluetooth", "możesz wyłączyć Wi-Fi", "wyłącz Bluetooth") * Włączanie trybu cichego (np. "wycisz telefon") * Wyłączanie trybu cichego (np. "wyłącz tryb cichy") * Otwieranie strony internetowej (np. "otwórz google.com") * Uruchamianie aplikacji (np. "uruchom Facebook") * Ustawianie nawigacji (np. "jak dojechać do Warszawy, al. Ujazdowskie 1") * Ustalanie twojej lokalizacji (np. "gdzie jestem") * Ustalanie lokalizacji określonego miejsca na mapie (np. "gdzie znajduje się Madryt") * Pobieranie informacji z Wikipedii (np. "kto to jest Justyna Kowalczyk") * Wyszukiwanie w Internecie (np. "szukaj inkwizycja") * Ustalanie obecnego poziomu baterii (np. "ile mam baterii") * Budziki: * Ustawianie (np. "ustaw budzik na 7:30") * Usuwanie (np. "nie chcę alarmu o 22:33") * Ustawianie domyślnego numeru dla wybranego kontaktu (numeru, który Polassis powinien zawsze wybierać) (np. "ustaw domyślny numer dla Jarka") * Powiedzenie obecnej godziny (np. "która godzina") * Powiedzenie obecnego dnia tygodnia (np. "jaki mamy dzień tygodnia") * Powiedzenie obecnej daty (np. "którego mamy dzisiaj") * Ustawianie przypomnień (np. "przypomnij mi") * Resetowanie urządzenia (np. "zrestartuj telefon") (**wymagany root**) * Wyłączanie urządzenia (np. "wyłącz telefon") (**wymagany root**) * Wyłączanie samego asystenta (np. "zamknij się") * Dyktowanie do schowka (np. "podyktuj do schowka") * Przedstawianie możliwości Polassisa (**niezaimplementowane**) Prawie wszystkie stabilne wersje i stare wersje beta mają również możliwość "przekierowania" niektórych funkcji do komputera PC/Mac (np. jeśli chcesz sprawdzić coś na Wikipedii, Polassis może przekazać to żądanie do twojego komputera, aby mógł on otworzyć odpowiednią stronę internetową). Jeżeli chcesz skorzystać z tej opcji, musisz włączyć odpowiednią opcję w ustawieniach Polassisa i zainstalować serwer na twoim komputerze: nazywa się on Polassis Server, jest to plik PolassisServer.jar (~~jego kod źródłowy zostanie opublikowany na licencji GNU GPL v3 do końca lipca 2018 roku, jeżeli wciąż mam dostęp do kodu~~ **AKTUALIZACJA: Niestety, prawdopodobnie nie mam już dostępu do pełnego kodu źródłowego**). ### Niestandardowe polecenia (nauka poleceń) **Wersja rozwojowa**: Możesz dodać/edytować/usunąć niestandardowe polecenia w ustawieniach Polassisa. **Wszystkie wersje stabilne i stare wersje beta**: Możesz dodać niestandardowe polecenia poprzez powiedzenie odpowiedniego polecenia, więcej szczegółów jest dostępnych w ekranie "Możliwości asystenta" w aplikacji. ### Intenty Polassis ma kilka intentów (ang. "intent"), które mogą być wywołane przez aplikacje zewnętrzne, np. Tasker czy Llama: * Uruchomienie asystenta (bez wywołania): * Typ: start activity * Nazwa paczki (package name): com.mg.polassis * Nazwa klasy (class name): com.mg.polassis.misc.Assistant * Dodatkowe informacje (extras): brak * Wywołanie asystenta (uruchomienie asystenta wraz z usługą rozpoznawania mowy): * Typ: start service * Nazwa paczki (package name): com.mg.polassis * Nazwa klasy (class name): com.mg.polassis.service.BackgroundSpeechRecognitionService * Dodatkowe informacje (extras): brak * Wywołanie asystenta w trybie klasycznym (przez ekran główny): * Typ: start activity * Nazwa paczki (package name): com.mg.polassis * Nazwa klasy (class name): com.mg.polassis.misc.Assistant * Dodatkowe informacje (extras): * Boolean: "activation" = true * Uruchomienie asystenta i przekazanie mu konkretnego polecenia: * Typ: start activity * Nazwa paczki (package name): com.mg.polassis * Nazwa klasy (class name): com.mg.polassis.misc.Assistant * Dodatkowe informacje (extras): * String: "command" = dowolna komenda, np. "włącz YouTube" * Uruchomienie asystenta i przekazanie mu konkretnego polecenia z wymogiem osobnego potwierdzenia przez użytkownika: * Typ: start activity * Nazwa paczki (package name): com.mg.polassis * Nazwa klasy (class name): com.mg.polassis.misc.Assistant * Dodatkowe informacje (extras): * String: "command" = dowolna komenda, np. "włącz YouTube" * Boolean: "ask_for_confirmation" = true ### Rozwiązywanie problemów * Jeżeli przycisk mikrofonu zmieni kolor na szary i pozostanie w tym stanie: * Sprawdź, czy rozpoznawanie mowy jest zainstalowane i poprawnie skonfigurowane w twoim urządzeniu. Może się okazać, że będziesz musiał przyznać usłudze rozpoznawania mowy uprawnienie nagrywania dźwięku, jeśli korzystasz z Androida 6.0+. * Sprawdzenie poszczególnych opcji w ustawieniach Polassisa jest dobrym pomysłem (np. przełączenie opcji "Wymusz. silnika Google" odpowiedzialnej za wymuszenie używania silnika rozpoznawnia mowy Google). * Jeżeli korzystasz z syntezy mowy, sprawdź, czy syntezator mowy jest zainstalowany i poprawnie skonfigurowany w twoim urządzeniu. * Jeżeli korzystasz z Androida 6.0+, sprawdź, jakie uprawnienia Polassis ma przyznane w twoim urządzeniu. ## Język (w budowie) ## Użyta twórczość osób trzecich Jeżeli zauważyłeś, że twoja praca jest wykorzystywana w Polassisie w jakiejkolwiek formie bez wspomnienia o tym poniżej, proszę dać mi znać: dodam odpowiednie uznanie lub zmodyfikuję kod tak, aby twoja twórczość nie była wykorzystywana w sposób niezgodny z prawem. Dziękuję! ### Biblioteki * Apache Commons IO 2.6: na [licencji Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0) * PocketSphinx: na [własnej licencji](https://github.com/maksgraczyk/Polassis/blob/master/pocketsphinx-android-5prealpha-nolib/LICENSE) * exp4j 0.4.4: na [licencji Apache 2.0](https://www.objecthunter.net/exp4j/license.html) ### Ikony * [Ikona autorstwa Elegant Themes](http://www.flaticon.com/free-icon/mic_10032): na [licencji CC BY 3.0](https://creativecommons.org/licenses/by/3.0/) * Ikony autorstwa Google: na [licencji CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) * Ikony autorstwa jxnblk: na [licencji MIT](https://opensource.org/licenses/MIT)