VOLEJ KDYKOLIV

+420 792 368 067

Offline QR - funkční demo android aplikace v AvaloniaUI

V tomto článku prezentuji funkční demo multiplatformní aplikace. Text navazuje na předchozí představení technologi Avalonia a není určen jako technický tutoriál.

Úvod

Mým cílem bylo vytvořit aplikaci primárně zaměřenou na mobilní telefony se systémem Android. Tato aplikace demonstruje běžné funkce, které by měla mobilní aplikace v dnešní době obsahovat. Chtěl jsem si zároveň vyzkoušet .NET jako technologii, která umožňuje plnohodnotný vývoj aplikací pro tyto platformy.

Aplikace je ze své povahy multiplatformní a lze ji provozovat na Linuxu, Windows, macOS, Androidu i iOS. Mým hlavním záměrem v tuto chvíli byla mobilní platforma Android, interakce se systémem a finální umístění v Google Play Store. V budoucnu aplikaci rozšířím o distribuci na systém Windows a Flatpak na platformě Linux.

Světlý/tmavý režim

Jako jednu ze základních funkcí moderní aplikace považuji možnost volby vzhledu, konkrétně pak přepínání mezi tmavým a světlým režimem. Tato funkce je tak běžná, že většina technologií ji podporuje v základu – ani Avalonia není výjimkou.

Moje řešení se dále zaměřuje nejen na výchozí nastavení „systémového“ vzhledu, ale i na přepnutí a uložení v menu pro nastavení aplikace.

Přizpůsobení velikosti textu

Další funkci, kterou považuji za důležitou z hlediska pohodlného používání aplikace, je možnost přizpůsobit velikost textu v uživatelském rozhraní.
Ze své zkušenosti vím, že tato funkce je mnoha vývojáři často opomíjena a málo která aplikace tuto volbu umožňuje.

Já jsem se rozhodl velikost textu navázat na nastavení ze systému Android. Moje aplikace se proto přizpůsobuje automaticky podle systémového nastavení.

Technologická vsuvka
Tuto funkci jsem realizoval vytvořením služeb implementujících stejný interface, které se liší na základě cílové platformy. Díky tomu se aplikace chová na každé platformě přirozeně.
Mimochodem, toto je jedna z největších předností technologie .NET, která stojí na tzv. SOLID principech.

Jazyková lokalizace aplikace

Jazykovou lokalizaci aplikace považuji za funkci, která se hodí, pokud cílíme na světový trh.
I v tomto případě jsem se rozhodl, že aplikace ve výchozím nastavení přizpůsobí své jazykové prostředí podle jazyka operačního systému.
Aplikace podporuje anglický a český jazyk, ale další jazyky lze snadno přidat. V případě, že uživatel používá systém s nepodporovaným jazykem, je výchozím jazykem angličtina.

Moje realizace opět nastaví jazyk na základě systému. A opět umožňuje výchozí nastavení změnit v menu aplikace a uložit.

Mým dodatečným cílem zároveň bylo, aby aplikaci nebylo nutno při změně jazyka restartovat. A součástí lokalizace je i lokalizace chybových zpráv.

Lokalizace aplikace se dá realizovat mnoha způsoby, a v tomto směru budu aplikaci určitě dále optimalizovat.

Sdílení / share menu

Podpora sdílení mezi aplikacemi je podle mého názoru velmi užitečná a dává aplikaci možnost stát se součástí uživatelského workflow. Z toho důvodu jsem tuto funkci do mé aplikace zahrnul.
Sdílení jsou vlastně dva typy: sdílení směrem k vaší aplikaci, kdy se vaše aplikace stává příjemcem, a sdílení z vaší aplikace na aplikaci jinou, kdy se vaše aplikace stává odesilatelem.
Technicky se jedná o dvě rozdílně realizované věci.

Moje aplikace umožňuje příjem vstupního textu z jiné aplikace. Tento text pak předvyplní do formuláře.
V případě sdílení z aplikace směrem na jinou aplikaci pak sdílí obrázek PNG.

Systém Android je v tomto směru velmi bezpečný a předání obrázku mezi aplikacemi se realizuje pomocí sdílené složky cache, kde je obrázek dočasně umístěn a cílová aplikace si z ní obrázek přečte.

Play

Publikace aplikace

Aplikace je sestavena pomocí technologie .NET a Avalonia a pro její sestavení není potřeba Android Studio. Celý proces od inicializace projektu až po publikaci včetně podepisování probíhá pomocí dotnet.

Aplikace je nyní ve fázi uzavřeného testování na platformě Google Play. Pro její veřejnou publikaci je nutné aplikaci testovat po dobu 14 dnů za účasti 12 testerů.

Z mé strany se jedná o funkční beta verzi modelové aplikace, kterou beru jako sandbox pro testování a prezentaci možností této technologie.

Technologická vsuvka

Jsem zvyklý aplikace vyvíjet na mém desktopu s NixOS. Celé vývojové prostředí mám díky tomu realizované pomocí flake.

Rád používám jednoduché, efektivní a přehledné nástroje s nízkou režií, proto píšu v editoru Neovim, který plně integruje Roslyn jako LSP pro .NET. V kombinaci s ls-for-avalonia mohu komfortně pracovat se šablonami .axaml. Celý projekt lze navrhnout a sestavit pomocí dotnet CLI. Díky Nix flake a open-source povaze .NET lze zároveň celé vývojové prostředí beze změn přímo integrovat do CI/CD.

🚨

Potřebujete modernizovat nebo vyvinout, výkonnou aplikaci?
Rád vám s tím pomohu!

Miroslav Valenta