IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 30 - Práce s bitmapou v Android a publikace na Google Play

V minulé lekci našeho Android kurzu, Poznámkový bloček pro Android - Info a dokončení, jsme dokončili poznámkový bloček s databází.

V dnešním tutoriálu se podíváme na práci s bitmapou a nakonec si ukážeme jak publikovat naši hotovou aplikaci na Google Play.

Další možnosti intentu a práce s bitmapou

V této krátké kapitolce si probereme další možnosti intentu, konkrétně vytáčení čísel a práci s bitmapou, abychom se naučili upravovat obrázky.

Využití systémových aktivit

Vaše aplikace může pomocí intentu zavolat systémovou aktivitu. Toho můžeme v našich aplikacích libovolně využívat.

Volání

Použití je velmi jednoduché. Na samotné zahájení volání nám stačí:

startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(tel:730910860)));

Tento řádek vyvolá systémovou aktivitu pro hovory a předá ji zadané číslo. Tento postup je ovšem docela nekomfortní. Pokud chceme, aby vše proběhlo automaticky (uživatel nemusel 2x vytáčet hovor) a po ukončení hovoru proběhl návrat do původní aplikace, je třeba učinit nějaké úpravy. V praxi to poté bude vypadat následovně:

public void startCall(View v){
    EditText zadani = (EditText) findViewById(R.id.editText);
    String cislo = zadani.getText().toString();
    call(cislo);
}

private void call(String cislo){
    String Call = "tel:"+cislo;
    startActivity(new Intent(Intent.ACTION_CALL, Uri.parse(Call)));
}

Toto řešení je již plně automatizováno, pro větší přehlednost je rozepsané do dvou metod. K aplikaci můžete přidat databázi kontaktů a máte plnohodnotnou aplikaci pro volání.

FastCall aplikace pro Android - Základy vývoje Android aplikací v Javě

FastCall aplikace

Bitmap

Tímto příkladem si tedy ukážeme práci s obrázky.

Práce s kanály aRGB

Zkusme si na obrázek aplikovat červený filtr. Postupně pomocí dvou cyklů procházíme celou bitmap pixel po pixelu. Vždy vezmeme jeden pixel, pomocí metody color.red získáme hodnotu kanálu R a ostatní dva kanály vynulujeme. První parametr ve funkci Color.argb() je průhlednost:

public void cervenyFiltr() {
    imw = (ImageView) findViewById(R.id.imv);
    Bitmap noMutableBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.obraz);
    /* Bitmap který vytváříme je immutable. To znamená, že s ním dále nemůžeme pracovat. Proto si v následujícím řádku vytváříme jeho kopii. Parametr true říká, že bitmap bude mutable.
    Bitmap bmp=noMutBmp.copy(Bitmap.Config.ARGB_8888, true);

    int wid = bmp.getWidth();
    int hig =bmp.getHeight();
    /* Získání šířky a výšky pro cykly. */

    for (int i = 1; i <= wid - 1; i++) {
        for (int j = 1; j <= hig - 1; j++) {
            int pix = bmp.getPixel(i, j);
            int rd = Color.red(pix);
            int barva = Color.argb(0xff, rd, 0, 0);
            bmp.setPixel(i, j, barva);
        }
    }
}

Kopírování

Prosté zkopírování bitmapy potom vypadá takto:

public void Kopiruj(View v) {
    imw = (ImageView) findViewById(R.id.imageView2);
    Bitmap noMutBmp = BitmapFactory.decodeResource(getResources(), R.drawable.bulik);
    bmp = noMutBmp.copy(Bitmap.Config.ARGB_8888, true);

    imw.setImageBitmap(bmp);
}

Hledání a počítání pixelů

Pokud potřebujeme zjistit, kolikrát se v daném obrázku vyskytuje určitý pixel, mohly bychom to řešit například takto:

public void pocitej(View v) {
    try {
        int shoda = 0;
        int wid = bmp.getWidth();
        int hig = bmp.getHeight();

        EditText red = (EditText) findViewById(R.id.editText);
        EditText green = (EditText) findViewById(R.id.editText2);
        EditText blue = (EditText) findViewById(R.id.editText3);

        int redHodnota = Integer.parseInt(red.getText().toString());
        int greenHodnota = Integer.parseInt(green.getText().toString());
        int blueHodnota = Integer.parseInt(blue.getText().toString());

        for (int i = 1; i <= wid - 1; i++) {
            for (int j = 1; j <= hig - 1; j++) {
                int pix = bmp.getPixel(i, j);
                int rd = Color.RED(pix);
                int gr = Color.GREEN(pix);
                int bl = Color.BLUE(pix);

                if (redHodnota == rd && greenHodnota == gr && blueHodnota == bl) shoda++;
            }
        }

        Toast.makeText(getApplicationContext(), "Zadaný pixel se zde vyskytuje " + shoda + "x", Toast.LENGTH_LONG).show();
    }
    catch(Exception e) {
        Toast.makeText(getApplicationContext(), "Obrázek nebo hodnoty nejsou nastaveny.", Toast.LENGTH_LONG).show();
    }
}

Takto bychom mohli pokračovat dále. Není tedy moc těžké vytvořit si vlastní rastrový editor.

Práce s bitmapou v Javě pro Android - Základy vývoje Android aplikací v Javě

Práce s bitmapou

Google Play

Každý z nás jistě zná Google Play a ví, že jde o on-line platformu, na které se nachází různé aplikace určené k distribuci zdarma nebo za poplatek. Jedná se o nejrozšířenější způsob distribuce aplikací, počty stažení se počítají na desítky miliard. Google Play jako takový oficiálně vznikl 6. března 2012 sloučením Android Marketu a Google Music.

Nejčastěji zde najdeme aplikace pro chytré telefony a tablety. Konkrétně části Google Play, kde jsou ke stažení tyto aplikace, se říká Google Play Store.

Registrace účtu vývojáře

Jako první potřebujeme účet vývojáře. Zaregistrovat se můžeme na tomto odkazu: https://play.google.com/…lish/signup/

Jednorázový registrační poplatek je v současné době 25$.

Nahrání APK

APK

  • v horní části obrazovky máme nabídku Přidat novou aplikaci
  • v rozbalovací nabídce vybereme výchozí jazyk a přidáme název aplikace
  • vybereme možnost Nahrát soubor APK

Popis

Po nastavení jazyků, které v rámci naší aplikace podporujeme, musíme přidat podrobnosti o produktu (záložka záznam v obchodu):

Název

Název aplikace na Google Play.

Krátký popis

Zobrazuje se při prohlížení stránky s podrobnostmi o naší aplikaci. Maximální počet znaků je 80.

Úplný popis

V úplném popisu je limit 4000 znaků.

Grafické podklady a zařazení do kategorie

Musíme si připravit nějaké grafické podklady pro prezentaci naší aplikace. Nejlépe snímky přímo z mobilu, kde je aplikace nainstalovaná. Aby naše aplikace byla zařazena do seznamu "Vhodné pro tablety", musíme nahrát alespoň jeden snímek aplikace na 7" a 10" tabletu.

Cena a distribuce

Nyní přejdeme do záložky "Cena a distribuce", kde vybereme zacílení na určité země, zda je aplikace placená nebo zdarma, a pár dalších možností ohledně distribuce.

Po odsouhlasení podmínek lze aplikaci publikovat. Samotná publikace trvá několik hodin.

Aktualizace aplikací

Jakmile klikneme v hlavním seznamu aplikací na nějakou specifickou aplikaci, přesměruje nás to do detailu konkrétní aplikace.

V záložce APK máme možnost "Nahrát nový soubor APK k produkci".

Zajisté všichni pochopili, že je třeba vytvořit nový soubor .apk s naší aplikací. Aby vše fungovalo jak má, je třeba přepsat soubor build.gradle (app). Konkrétně se musí přepsat versionCode tak, aby se neshodoval s předchozí verzí, také doporučuji pro přehlednost přepsat versionName.

Aktualizace aplikace na Google Play - Základy vývoje Android aplikací v Javě

aktualizace souboru build.gradle

Změna API

  • upravíme minSdkVersion v souboru build.gradle (app)
  • pomocí Sync gradle button synchronizujeme aplikaci
  • rebuildujeme celý projekt
Minimální verze Android SDK - Základy vývoje Android aplikací v Javě

build.gradle změna API

Selhání a chyby

V detailu aplikace máme záložku "Selhání a chyby ANR". Po správném nastavení filtru se nám všechny chyby vypíší do tabulky:

Selhání a chyby - Základy vývoje Android aplikací v Javě

Chyby, výpis

V každém přehledu chyby najdeme grafy a informace. Dozvíme se zde, na jaké verzi aplikace, Androidu a na jakém zařízení došlo k chybě. Může se totiž stát, že je aplikace nestabilní jen na určitých zařízeních a pomocí těchto výpisů bychom měli přijít na to, kde je chyba:

Grafy chyb v Android aplikaci - Základy vývoje Android aplikací v Javě

Chyby, grafy

Chyba, kterou máme ukázanou na obrázcích výše, způsobovala pád aplikace na zařízení LG G2. Příčinou bylo nevhodné rozlišení textury umístěné na pozadí:

Výpis chyby v Android aplikaci - Základy vývoje Android aplikací v Javě

Chyby, část výpisu

Náš Android kurz je u konce a doufám, že vám pomohl naučit se programovat aplikace pro tuto platformu. Určitě se s námi podělte o vaše výtvory :)

V další, doplňující lekci, Android programování - Grafický návrh aplikací, se podíváme na nastavení layoutů.


 

Předchozí článek
Poznámkový bloček pro Android - Info a dokončení
Všechny články v sekci
Základy vývoje Android aplikací v Javě
Přeskočit článek
(nedoporučujeme)
Android programování - Grafický návrh aplikací
Článek pro vás napsal Jiří Frank
Avatar
Uživatelské hodnocení:
4 hlasů
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
Aktivity