6. díl - Android programování - Dokončení implementace kalkulačky

Java Android Android programování - Dokončení implementace kalkulačky

V minulém tutoriálu o tvorbě Android aplikací v Javě jsme rozepsali třídu reprezentující jednoduchou kalkulačku. V dnešním dílu aplikaci dokončíme a nahrajeme ji do telefonu.

Do třídy dodáme metody Secti(), Odecti(), Vynasob(), Vydel(), budou mít stejný princip. Uloží do privátní proměnné C1 číslo na obrazovce a metodu (číslo 1-4). Také nastaví potřebné řídící proměnné.

public void Secti(View v) {
        C1 = Double.parseDouble(Obraz.getText().toString());

        metoda = 1;
        Obraz.setText("0");
        prosel = false;
        C1Nastaven = true;

        Cislo1.setText(String.valueOf(C1));
        Operace.setText("+");
}

public void Odecti(View v) {
        C1 = Double.parseDouble(Obraz.getText().toString());

        metoda = 2;
        Obraz.setText("0");
        prosel = false;
        C1Nastaven = true;

        Cislo1.setText(String.valueOf(C1));
        Operace.setText("-");
}

public void Vynasob(View V) {
        C1 = Double.parseDouble(Obraz.getText().toString());

        metoda = 3;
        Obraz.setText("0");
        prosel = false;
        C1Nastaven = true;

        Cislo1.setText(String.valueOf(C1));
        Operace.setText("*");
}

public void Vydel(View V) {
        C1 = Double.parseDouble(Obraz.getText().toString());

        metoda = 4;
        Obraz.setText("0");
        prosel = false;
        C1Nastaven = true;

        Cislo1.setText(String.valueOf(C1));
        Operace.setText("/");

}

Konečně dodáme i metodu Vypocti(). Pokud se metoda nerovná 5, znamená to, že je nastavená a lze načíst do paměti C2. Podle toho, o jakou metodu se jedná, se provede patřičná operace pomocí switch case. Při dělení vznikají dlouhé řetězce čísel, proto je třeba po počítání zjistit, na jakém místě je desetinná čárka a podle toho zaokrouhlit.

public void Vypocti(View v) {

    if (C1Nastaven==true) {
        if (metoda!=5) {
                        C2 = Double.parseDouble(Obraz.getText().toString());
                        Cislo2.setText(String.valueOf(C2));
        }
        switch (metoda) {
            case 1: {
                Vys = C1 + C2;
                metoda=5;
                 break;
            }

            case 2: {
                Vys = C1 - C2;
                metoda=5;
                break;
            }

            case 3: {
                Vys = C1 * C2;
                metoda=5;
                break;
            }

            case 4: {

                if (C2!=0) {
                    Vys = C1 / C2;
                    metoda=5;
                    break;
                }
                else {
                    Toast.makeText(this, "Nelze dělit nulou!", Toast.LENGTH_LONG).show();
                    VymazVse(v);
                    break;
                }
            }
            case 5: {
                break;
            }
        }

        if (Vys==0) {
            Obraz.setText("0");
        }

        else {
            DecimalFormat DF = new DecimalFormat("#.########");
                String Vysl=DF.format(Vys);
                Vysl=Vysl.replace(",",".");
                int poz=Vysl.indexOf(".");
            if (poz >= 8) {
                    Toast.makeText(this, "Byl překročen limit 9 čísel", Toast.LENGTH_LONG).show();
                    VymazVse(v);
                    return;
                }
                if (Vysl.length()>=10) {
                    String substring = Vysl.substring(0, 9);
                    Obraz.setText(substring);
                    return;
                }
                else {
                    Obraz.setText(Vysl);
            }
                C1Nastaven=false;
                prosel = false;
       }
   }
}

Aplikace je hotová. Přejděme k vygenerování .apk souboru, abychom ji mohli vyzkoušet.

Vygenerování .apk souboru

Vygenerování APK

Po kliknutí na Generate Signed APK (viz. Obrázek výše) se nám zobrazí tabulka, ve které klikneme na vytvoření nového klíče a vyplníme tabulku. Může to vypadat takto:

Vytvoření klíče

Nyní dáme OK a máme vytvořený náš první klíč. V předchozí tabulce k němu nastavíme cestu a vyplníme požadované údaje:

Potvrzení vygenerování APK

Po potvrzení stačí akorát vybrat cestu, kam se má naše .apk aplikace vygenerovat. Po vygenerování v Android Studio vyskočí nabídka s možností „show in explorer“.

4 Testování

Díky průběžnému testování při vývoji této aplikace jsem odhalil několik nežádoucích problémů, jako zobrazování čísla x.0 kvůli datovému typu, dále zaokrouhlování na potřebný počet desetinných míst nebo zapsání -0. Také se ukázal problém, při přepisování výsledků, které mají 9 znaků, proto jsem musel upravit podmínky v metodě pro zápis čísla.

Testovat můžeme buď na emulátoru nebo na reálných zařízeních. Návod pro instalaci nejlepšího možného emulátoru je v tutoriálu Android programování - Vývojové prostředí v kapitole Instalace Android Studia, podkapitola Emulátor.

Já však doporučuji z vlastní zkušenosti testování na reálných zařízeních.

4.1 Testování aplikací na reálném zařízení

V mobilu musíme zpřístupnit možnosti vývojáře. Většinou se to dělá v záložce „Obecné“ tím, že najedeme do „Info o telefonu“ a vybereme „Softwarové informace“. Dále jen 10x klepneme na nabídku „Číslo sestavení“. Po chvíli se objeví hláška, že jste se stali vývojářem a v nastavení v kartě Obecné přibude nabídka „Možnosti vývojáře“.

Android možnosti vývojáře

Nyní propojíme USB kabelem s PC a zapneme „Možnosti vývojáře“ a povolíme Ladění USB. Doporučuji nechat nainstalovat kompletní balíček SW pro dané zařízení. Potom potvrdíme dialogové okno, které v mobilu vyskočí. Teď můžeme dát v Android Studio Run (zelená šipka nebo shift + F10).

RunApp

Okno s nabídkou dostupných zařízení potvrdíme a za pár chvil se naše aplikace rozběhne na telefonu. O všem co se v aplikaci děje nás informuje Android DDMS.

Závěr

Kompletní Java kód včetně jednotlivých XML souborů máte v příloze. Nachází se tam i podklady pro vytvoření jednoduché úvodní animace, kterou si vytvoříme v příštím dílu. (Mé řešení této aplikace: https://play.google.com/…apps/details?…).

Další aplikace, které si vytvoříme, budou poznámkový blok/textový editor a hra šibenice.


 

Stáhnout

Staženo 689x (219.34 kB)
Aplikace je včetně zdrojových kódů v jazyce Android Java

 

  Aktivity (1)

Článek pro vás napsal Jiří Hlavík
Avatar
Autor se věnuje programování v C# a vývoji aplikací pro platformu Android a dalším věcem spojeným s Android OS

Jak se ti líbí článek?
Celkem (2 hlasů) :
55555


 



 

 

Komentáře
Zobrazit starší komentáře (9)

Avatar
Anty
Člen
Avatar
Anty:

Nejspíš máš pravdu, stažené APK soubory se uloží do cache, kde jsou uchovány, dokud je dost místa v zařízení, nebo dokud si aplikace nevyžádá jejich odstranění, nebo do restartu zařízení, pak jsou odstraněny. Myslel jsem, že google play si po instalaci aplikace vyžádá i odstranění APK, na mém zařízení jsou všechny tyto APK soubory ihned odstraněny, je to ale asi způsobeno nedostatkem místa v cache.

 
Odpovědět 17.7.2015 16:18
Avatar
Taskkill
Redaktor
Avatar
Odpovídá na Anty
Taskkill:

No ani to není úplně korektní - máš rootnuté zařízení? Já ano a vím, že v systémovém adresáři (nemám ho teď u sebe tak nevím cestu) jsou uloženy všechny instalačky k nainstalovaným appkám. Nejde tedy o cache a klidně si můžeš přes root explorer ten apk soubor zkopírovat kam chceš a po odinstalaci/kdy apk zmizí si jí můžeš nainstalovat sám.

 
Odpovědět 17.7.2015 16:50
Avatar
Anty
Člen
Avatar
Odpovídá na Taskkill
Anty:

Taky mám root, ale jestli myslíš apk soubory uložené většinou v "/data/app/", tak se nejedná o uložiště pro stažené apk pomocí google play, ale apk nainstalovaných aplikací, android při instalaci akorát mimo jiné nakopíruje apk do tohoto úložiště a zde apk soubor zůstane, dokud se aplikace neodinstaluje, ale google play nejprve stáhne apk do cache a následně jej instalátor balíčků v průběhu instalace nakopíruje do zmíněného úložiště.
V minulosti jsem už několikrát instaloval aplikace tím, že jsem akorát zkopíroval apk do zmíněného úložiště a následně restartoval telefon, vím že to není správný způsob, ale když mám v telefonu jen 150mb na data (z toho systém si vezme asi 110mb), tak je celkem těžké nainstalovat nějakou apk (teď už nějakou dobu používám link2sd a tak jsem nemusel obcházet minimum paměti pro instalaci)

 
Odpovědět 30.7.2015 21:06
Avatar
polemes
Redaktor
Avatar
polemes:

Jaktože mi nejde testovani na mobilu? Neni to tym že mam Sony xperia E1?

Odpovědět 26.8.2015 22:36
5 + 5 = 1010
Avatar
Jiří Hlavík
Redaktor
Avatar
Odpovídá na polemes
Jiří Hlavík:

Ahoj, v telefonu problém určitě nebude. Povolil jsi v „Možnosti vývojáře“ Ladění USB?

 
Odpovědět 30.8.2015 9:34
Avatar
polemes
Redaktor
Avatar
polemes:

Co že!!! :-O povolil sem to už před tim ale teď to jde!!! :-O tak se moc a moc omlouvám za zdržováni ale když sem tě už zdržel tak jak udělat aby se vypsala hodnota (int)?

Odpovědět 30.8.2015 20:52
5 + 5 = 1010
Avatar
Jiří Hlavík
Redaktor
Avatar
Odpovídá na polemes
Jiří Hlavík:

Ahoj, :) u některých telefonů je třeba pár sekund/minut nechat telefon zapojený, aby se doinstalovaly ovladače, zrovna před pár dny se mi to stalo. :)..

K tomu vypsání.. O co přesně se jedná? Pokud chceš pouze "informovat" či "kouknout" na tu hodnotu, použij toast.
http://developer.android.com/…/toasts.html

Pokud ji chceš vypsat "trvaleji", použij TextView (spoustu příkladů je popsáno v tomto seriálu).
Pokud jsou s tím problémy, napiš mi na jeden z kontaktů, které mám na svém profilu tady na itnetwork.cz.
(Nemám poslední dobou moc času, pokud napíšeš na skype/FB tak mě zastihneš častěji než zde)

 
Odpovědět 31.8.2015 19:52
Avatar
Jaroslav Zakouřil:

Ahoj všem a děkuji za přivítání !
Mám Huawei Ascend G620s teprve asi 4 měsíce, ale vzhledem k tomu, že jsem již dříve psal programy v různých jazycích i webové stránky, tak mi to nedalo a začal jsem se zajímat psaní aplikací pro Android. Takže jsem se stal členem vaší komunity a zkouším to s Android Studiem. Na počítači mám ještě stále XPčka. Mám však problém. Nefunguje mi správně připojení telefonu k počítači. Sice můžu do telefonu i z něj do počítače stanovat soubory, ale nefrunguje USB ladění. Stáhl a nainstaloval jsem USB driver pro svůj mobil z této stránky http://androidxda.com/…-usb-drivers, ale chci-li program vyzkoušet na mobilu, musím tam apk soubor nahrát, instalovat a pak spustit. Možnosti pro vývojáře mám otevřené, umožněno ladění USB, když kliknu na Run, otevře se okno Choose Device, ale tabulka Device je prázdná. Takže buď mám špatný driver nebo to nefunguje ve Windows XP. Poraďte mi, prosím, jak to mám rozchodit. Díky

 
Odpovědět 22.10.2015 18:58
Avatar
Ondrej Elláš:

V Android Studio som úplný začiatočník. Preto bojujem s každým krokom. Pri kalkulačke som sa dostal až po generovanie APK. Na rozdiel od popisu v článku moje Studio umožňuje aj Build APK. Ten prebehol v poriadku. Keď som zadal Generate Signed APK (build type - release) dostal som nasledovné hlásenie:

Failure: Build failed with an exception.

*What went wrong:
Execution failed for task ´:app:validate­SigningRelease.
Keystore file c:\VeciProAndro­id\PrvniKlicek­.jks not found for signing config 'external Override'

  • Try:

    Run with --stacktrace option to get the stacktrace.

    Run with --info or --debug optin to get more log output.
    Build Failed

Vie mi niekto poradiť kde robím chyby ?

 
Odpovědět 29. listopadu 21:35
Avatar
Ondrej Elláš:

Po problémoch popísaných v predchádzajúcom príspevku, som vyskúšal najjednoduchšiu aplikáciu Hallo world.
Build APK bol bez problémov úspešný, ale Gererate Signed APK zlyhal presne ako je popísané v predchádzajúcom príspevku.
Robím asi niekde systémovú chybu. Poradími niekdo v čom robím chybu ?

 
Odpovědět 30. listopadu 9:57
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 19. Zobrazit vše