24. díl - Práce s bitmapou v Android a publikace na Google Play

Java Android Práce s bitmapou v Android a publikace na Google Play

V minulém dílu našeho Android seriálu jsme dokončili poznámkový bloček s databází. V dnešním dí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ě volání a práci s bitmapou. Zvolil jsem práci s bitmapou, protože chci ukázat, jak je v některých situacích podobné programování v Javě pro Android a například C# při programování pro PC.

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

Obrázek 1 - FastCall aplikace

Bitmap

Tímto příkladem si tedy ukážeme, že jsou některé "programátorské" počiny řešeny v Javě pro Android podobně, jak jste zvyklí z klasického programování.

Práce s kanály aRGB

Červený filtr aplikujeme tak, že postupně pomocí dvou cyklů procházíme celý 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 NoMutable. 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

Obrázek 2 - Práce s bitmapou

Google Play

Každý z nás jistě zná Google Play a ví, že jde o online 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á pár 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 tak jak má, je třeba přepsat soubor „build.gradle(ap­p)“. 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

Obrázek 1 - build.gradle aktualizace

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

Obrázek 2 - 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

Obrázek 3 - 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

Obrázek 4 - Chyby, grafy

Chyba, kterou máme ukázanou na obrázku 3 a 4, 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

Obrázek 5 - Chyby, část výpisu

Android seriál je u konce a doufáme, ž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 :)

Zdroje:


 

  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 (3 hlasů) :
4.666674.666674.666674.666674.66667


 



 

 

Komentáře

Avatar
Neaktivní uživatel:

Ahoj,jak mám udělat aby nemusel nahrávat na google play ,no prostě jak to mám skomplikovat :D já tu apku delal jen pro kámoše a kvůli tomu 25 dolaru vyhazovat nechci :(
Děkuji předem .

Odpovědět 23. ledna 10:02
Neaktivní uživatelský účet
Avatar
Jiří Hlavík
Redaktor
Avatar
Jiří Hlavík:

Ahoj.. Potřebuješ vygenerovat .apk soubor, stejně jako kdyby jsi ho chtěl nahrát na google play, ale nebudeš ho nikam nahrávat ovšem předáš ho tomu tvému kamarádovi, tvůj kamarád si jakýmkoliv zmpůsobem a kamkoliv tento .apk soubor přetáhne do mobilu a poté jej spustí a tím nainstaluje aplikaci. Důležité je, aby měl povoleno instalování aplikací z neznámých zdrojů (pokud nebude, Android ho sám pobídne k povolení).
Jak vygenerovat .apk (kdyby něco nesedělo, tak napiš, nejsem teď na linuxu ale na Widlích, a nechce se mi teď přebootovávat abych se na to koukl, taky záleží na verzi, jestli třeba něco není pojmenované trošku jinak :D):

  1. Build,
  2. najdeš Generate Signed APK,
  3. vytvoříš si "key", měla by vyskošit nová tabulka, jenom jednoduše vyplníš tu tabulku co vyskočí a dáš OK, pak tě to vrátí k předchozí tabulce,
  4. tady nastavíš cestu k tomu klíči, mělo by to být úplně nahoře, pak vyplníš zbytek tabulky,
  5. next, .apk soubor s aplikací se ti vygeneruje tam, kam nastavíš cestu, dokonce by ti ve finále měla vyskočit možnost "show in explorer".

Snad to takhle bude stačit, kdyby byl problém i nadále, napiš.

 
Odpovědět 23. ledna 14:33
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 2 zpráv z 2.