Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

24. diel - Práca s bitmapy v Android a publikácie na Google Play

V minulej lekcii nášho Android kurzu, Poznámkový bloček pre Android - Info a dokončenie , sme dokončili poznámkový bloček s databázou. V dnešnom tutoriálu sa pozrieme na prácu s bitmapy a nakoniec si ukážeme ako publikovať našu hotovú aplikáciu na Google Play.

Ďalšie možnosti Intent a práce s bitmapy

V tejto krátkej kapitolce si preberieme ďalšie možnosti Intent, konkrétne vytáčanie čísel a prácu s bitmapy, aby sme sa naučili upravovať obrázky.

Využitie systémových aktivít

Vaša aplikácia môže pomocou Intent zavolať systémovú aktivitu. Toho môžeme v našich aplikáciách ľubovoľne využívať.

Volanie

Použitie je veľmi jednoduché. Na samotné začatie volanie nám stačí:

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

Tento riadok vyvolá systémovú aktivitu pre hovory a odovzdá ju zadané číslo. Tento postup je však celkom nekomfortné. Ak chceme, aby všetko prebehlo automaticky (užívateľ nemusel 2x vytáčať hovor) a po ukončení hovoru prebehol návrat do pôvodnej aplikácie, je potrebné urobiť nejaké úpravy. V praxi to potom bude vyzerať nasledovne:

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 riešenie je už plne automatizované, pre väčšiu prehľadnosť je rozpísané do dvoch metód. K aplikácii môžete pridať databázu kontaktov a máte plnohodnotnú aplikáciu pre volanie.

FastCall aplikácie pre Android - Programovanie Android aplikácií v Jave

FastCall aplikácie

Bitmap

Týmto príkladom si teda ukážeme prácu s obrázkami.

Práca s kanálmi aRGB

Skúsme si na obrázok aplikovať červený filter. Postupne pomocou dvoch cyklov prechádzame celú bitmap pixel po pixeli. Vždy vezmeme jeden pixel, pomocou metódy color.red získame hodnotu kanála R a ostatné dva kanály vynulujeme. Prvý parameter vo funkcii Color.argb() je transparentnosť:

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írovanie

Prosté skopírovanie bitmapy potom vyzerá 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);
}

Hľadanie a počítanie pixelov

Ak potrebujeme zistiť, koľkokrát sa v danom obrázku vyskytuje určitý pixel, mohli by sme to riešiť naprí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 by sme mohli pokračovať ďalej. Nie je teda moc ťažké vytvoriť si vlastný rastrový editor.

Práca s Bitmap v Jave pre Android - Programovanie Android aplikácií v Jave

Práca s Bitmap

Google Play

Každý z nás určite pozná Google Play a vie, že ide o on-line platformu, na ktorej sa nachádza rôzne aplikácie určené na distribúciu zdarma alebo za poplatok. Ide o najrozšírenejší spôsob distribúcie aplikácií, počty stiahnutí sa počítajú na desiatky miliárd. Google Play ako taký oficiálne vznikol 6. marca 2012 zlúčením Android Marketu a Google Music.

Najčastejšie tu nájdeme aplikácie pre inteligentné telefóny a tablety. Konkrétne časti Google Play, kde sú k stiahnutiu tieto aplikácie, sa hovorí Google Play Store.

Registrácia účtu vývojárov

Ako prvý potrebujeme účet vývojárov. Zaregistrovať sa môžeme na tomto odkaze: https://play.google.com/...lish/signup/

Jednorazový registračný poplatok je v súčasnej dobe 25$.

Nahranie APK

APK

  • v hornej časti obrazovky máme ponuku Pridať novú aplikáciu
  • v rozbaľovacej ponuke vyberieme predvolený jazyk a pridáme názov aplikácie
  • vyberieme možnosť Nahrať súbor APK

Popis

Po nastavení jazykov, ktoré v rámci našej aplikácie podporujeme, musíme pridať podrobnosti o produkte (záložka záznam v obchode):

Názov

Názov aplikácie na Google Play.

Krátky popis

Zobrazuje sa pri prezeraní stránky s podrobnosťami o našej aplikácii. Maximálny počet znakov je 80.

Úplný opis

V úplnom opise je limit 4000 znakov.

Grafické podklady a zaradenie do kategórie

Musíme si pripraviť nejaké grafické podklady pre prezentáciu našej aplikácie. Najvyššie snímky priamo z mobilu, kde je aplikácia nainštalovaná. Aby naša aplikácia bola zaradená do zoznamu "Vhodné pre tablety", musíme nahrať aspoň jeden obrázok aplikácie na 7 "a 10" tabletu.

Cena a distribúcia

Teraz prejdeme do záložky "Cena a distribúcia", kde vyberieme zacielenie na určité krajiny, či je aplikácia platená alebo zadarmo, a pár ďalších možností ohľadom distribúcie.

Po odsúhlasení podmienok možno aplikáciu publikovať. Samotná publikácia trvá niekoľko hodín.

Aktualizácie aplikácií

Akonáhle klikneme v hlavnom zozname aplikácií na nejakú špecifickú aplikáciu, presmeruje nás to do detailu konkrétnej aplikácie.

V záložke APK máme možnosť "Nahrať nový súbor APK na produkciu".

Zaiste všetci pochopili, že je potrebné vytvoriť nový súbor .apk s našou aplikáciou. Aby všetko fungovalo ako má, je potrebné prepísať súbor build.gradle (app). Konkrétne sa musí prepísať versionCode tak, aby sa nezhodoval s predchádzajúcou verziou, tiež odporúčam pre prehľadnosť prepísať versionName.

Aktualizácia aplikácie na Google Play - Programovanie Android aplikácií v Jave

aktualizácie súboru build.gradle

Zmena API

  • upravíme minSdkVersion v súbore build.gradle (app)
  • pomocou Sync grádl button synchronizujeme aplikácii
  • rebuildujeme celý projekt
Minimálna verzia Android SDK - Programovanie Android aplikácií v Jave

build.gradle zmena API

Zlyhania a chyby

V detaile aplikácie máme záložku "Zlyhanie a chyby ANR". Po správnom nastavení filtra sa nám všetky chyby vypíšu do tabuľky:

Zlyhanie a chyby - Programovanie Android aplikácií v Jave

Chyby, výpis

V každom prehľade chyby nájdeme grafy a informácie. Dozvieme sa tu, na aké verziu aplikácie, Androidu a na akom zariadení sa vyskytla chyba. Môže sa totiž stať, že je aplikácia nestabilný len na určitých zariadeniach a pomocou týchto výpisov by sme mali prísť na to, kde je chyba:

Grafy chýb v Android aplikácii - Programovanie Android aplikácií v Jave

Chyby, grafy

Chyba, ktorú máme zobrazené na obrázkoch vyššie, spôsobovala pád aplikácie na zariadení LG G2. Príčinou bolo nevhodné rozlíšenie textúry umiestnené na pozadí:

Výpis chyby v Android aplikácii - Programovanie Android aplikácií v Jave

Chyby, časť výpisu

Náš Android kurz je u konca a dúfam, že vám pomohol naučiť sa programovať aplikácie pre túto platformu. Určite sa s nami podeľte o vaše výtvory :)


 

Predchádzajúci článok
Poznámkový bloček pre Android - Info a dokončenie
Všetky články v sekcii
Programovanie Android aplikácií v Jave
Preskočiť článok
(neodporúčame)
Android programovanie - grafický návrh aplikácií
Článok pre vás napísal Jiří Frank
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
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