WinRT KeyDown volán dvakrát pro klávesu Enter

Všiml jsem si zvláštního problému, ke kterému dochází při zpracování události KeyDown. Když uživatel stiskne klávesu ‘Enter’, tato událost je ve skutečnosti ve WinRT zpracována dvakrát (alespoň pro ovladací prvky TextBoxPasswordBox  u kterých jsem si tohoto chování všiml).

Podívejte se na následující příklad:

Co se stane, když uživatel uvnitř textového pole, které má zaregistrovaný tento handler události KeyDown, stiskne ‘Enter’?

Jak jste očekávali, událost je zpracována a frame naviguje na stránku  SomeOtherPage . Ale jakmile zpracování skončí, je metoda zavolána znovu s přesně stejnými argumenty! Kód metody je proveden znovu, takže frame podruhé načte shodnou stránku (a nyní tedy při pokusu o navigaci zpět je v navigačním zásobníku ještě původní instance).

Toto chování je zřejmě spojeno pouze s klávesou ‘Enter’ a nevyskytuje se u jiných kláves. Řešení problému naštěstí je snadné:

Nastavením vlastnosti KeyRoutedEventArgsHandled na true říkáme, aby se zpracování a “bublání” směrem XAML stromem nahoru ukončilo, ale to zároveň zabrání tomu, aby byla událost znovu zpracována na stejném ovládacím prvku.

Problém jsem reportoval v aplikaci Windows Feedback  v sekci Developer Platform. Pokud chcete vyřešení tohoto bugu podpořit, dejte mu hlas kliknutím sem 🙂 .

Jak zobrazit dotykovou klávesnici při práci s TextBoxy ve WPF

Aktualizováno – listopad 2016 – .NET Framework 4.6.2

Aplikace ve WPF (Windows Presentation Foundation) mají ve světě dotykových obrazovek zatím trochu těžký život. V případě WinRT aplikací se panel s dotykovou obrazovkou zobrazí automaticky, kdy je aktivováno kterékoliv textové pole v aplikaci, aby uživatel nemusel přerušovat své workflow a všechny úkony mohl provádět jen dotykem. Pro klasické desktopové aplikace je ale situace trochu komplikovanější – textová pole klávesnici automaticky nezobrazí a je tak na uživateli, aby ji otevřel sám. A to je nepraktické.

TouchKeyboard
Hej! Jak tě zobrazím ve své WPF aplikaci?

Pro tento problém existují dvě různá řešení.

Trošku hackovací řešení

První řešení vyžaduje trochu hraní se systémem. Nejdříve je nutné vypnout podporu pro použití pera jako vstupního zařízení v naší aplikaci a následně je možné vynutit, aby se textová pole chovala stejně jako ve WinRT pomocí nativních Windows API. To samozřejmě zahrnuje nutnost provést COM import příslušných nativních funkcí systému. Celý proces je velmi dobře popsán zde na blogu Briana Lagunase a doporučuji vám jej vyzkoušet. Pokud vám řešení bude vyhovovat, skvěle!

Nevýhodou tohoto řešení, kterou jsem náhodou objevil, je fakt, že vypnutí podpory pera z nějakého důvodu zablokuje možnost dotykového “scrollování” skrz ovladací prvky typu ListBox. Kterýkoliv pokus o scrollování tímto způsobem způsobí volání události ItemClick na položkách seznamu, kterých se dotkneme. Uživatel pak může scrollovat pouze malým posuvníkem seznamu, který je pro dotyk nevhodný.

Jednoduchá, ale více manuální cesta

Abychom obešli problémy, které přícházejí po vypnutí podpory pera ve WPF aplikaci (případně pokud tuto podporu vyžadujeme), můžeme jít na celý problém jednodušší cestou, ač s trochu méně automaticky. Vytvoříme vlastní implementaci TextBoxu:

Jak to funguje?

Když TextBox získá focus po dotyku uživatele, je zavolána událost GotTouchCapture. V zpracování této události můžeme manuálně spustit proces dotykové klávesnice. Ta je totiž normální spustitelnou aplikací na cestě  “C:\Program Files\Common Files\Microsoft Shared\Ink\TabTip.exe”.

Toto řešení je velmi jednoduché a nevyžaduje žádné explicitní “hackování”. Jedinou nevýhodou je, že vy jako vývojář musíte vždy pamatovat, abyste namísto klasického TextBoxu používali tuto modifikovanou verzi pokaždé, kdy je vyžadováno správné dotykové chování.

Ukončení procesu

Logickým rozšířením tohoto řešení je zabití procesu dotykové klávesnice ve chvíli, kdy ji již nepotřebujeme – tedy když vstupní pole ztratí focus. Metoda Process.Start( string ) vrací instanci třídy Process, která má instanční metodu Kill() . Tato metoda ukončí proces jež instance představuje.

Nejprve potřebujeme zajistit, abychom k instanci procesu měli přístup:

Nyní jen napojíme událost LostFocus:

 

Aktualizováno – co Windows 10?

Ve Windows 10 se tento problém stává spíše kosmetickou vadou díky novému Režimu tabletu.

Režim tabletu

tablet-modeNejnovější verze Windows přináší nový Režim tabletu, do kterého se lze přepnout pomocí tlačítka v Centru akcí nebo přes aplikaci Nastavení. Přestože tento mód někteří vidí jako nevýhodu oproti Windows 8.1, umožňuje výrazně intuitivnější integraci nových Windows Store aplikací a klasických desktopových aplikací. Každá aplikace se ve výchozí podobě spouští v režimu celé obrazovky, ale je stále možné spouštět dvě aplikace vedle sebe. Jednou z velmi pěkných výhod Režimu tabletu je fakt, že dotyková klávesnice na obrazovce se zobarzuje automaticky, když jakýkoliv textový prvek dostane focus, a to nezávisle na typu aplikace. Tímto můžete přenechat kontrolu nad zobrazením klávesnice systému samotnému a usnadnit si tak výrazně práci. Jedinou nevýhodou je to, že i přes talbetové zobrazení klávesnice na rozdíl od Windows Store aplikací překrývá obsah okna nad kterým je zobrazena a neposune jej nahoru, ani ve chvíli, kdy je připnuta ke spodní straně obrazovky. Může se tak stát, že kontextová menu a drop-down seznamy skončí pod klávesnicí a uživatel je tak nucen ji pro pokračování manuálně uzvařít.

Mimo Režim tabletu

Ale co v případě, že Režim tabletu z nějakého důvodu nechcete nebo nemůžete použít? Jedno nenápadné nastavení nás zachrání!

Otevřete aplikaci Nastavení, přejděte do sekce Zařízení a vyberte Psaní – zde skrolujte dolů a úplně na konci najdete nastavení, které je ve výchozím stavu vypnuto (bohužel nechápu z jakého důvodu) – po povolen tohoto nastavení se dotyková klávesnice zobrazí automaticky ve chvíli, kdy se prstem spustí zadávání textu a není připojena žádná klávesnice. Toto je perfektní řešení pro většinu případů a používání klasických aplikací na dotykovém zařízení to dělá intuitivním a konzistentním.touch

Aktualizováno – .NET Framework 4.6.2

V srpnu 2016 Microsoft oznámil novou aktualizaci .NET Framework 4.6.2. Kromě velmi užitečného rozšíření WPF o podporu Per-Monitor DPI tato aktualizace také adresovala problém s klávesnicí na dotykovém zařízení.

WPF aplikace cílené na novou verzi frameworku podporují automatickou invokaci a skrytí dotykové klávesnice stejně tak jako je to u nových UWP aplikací, takže výše uvedená řešení již nejsou pro nové aplikace nutná.

softkeyboard

Podmíněné kopírování nativních knihoven

Při práci s nativními knihovnami závislými na architektuře projektu (jako je například SQLite) často potřebujeme zkopírovat do výstupní složky projektu korektní DLL soubory, které chceme využívat pro vybraný typ procesorové architektury. Ale jak toho dosáhnout jednoduše bez nutnosti manuálního kopírování? Odpovědí jsou “Pre-build event commands” ve Visual Studiu.

Nejprve si vytvořte složku pro knihovnu kterou chcete kopírovat a do ní vytvořte podsložky odpovídající architekturám, které podporuje. Do každé z těchto podsložek vložte DLL a podpůrné soubory dané knihovny.

sqlite

Nyní klikněte pravým tlačítkem myši ve Visual Studiu na kořen projektu v Solution Exploreru a vyberte Properties. V otevřeném okně vlastností projektu vyberte v levém panelu záložku Build Events. Objeví se před vámi dvě prázdné textové oblasti. Do nich můžete zapisovat příkazy, které se provedou před, respektive po sestavení projektu.

Build

Klikněte nyní na tlačítko Edit Pre-build … a můžete začít vkládat své příkazy. Pro naše účely bude dostačující využít jednoduchý ale mocný systémový nástroj xcopy pro zkopírování souborů ze složky s naší knihovnou do složky výstupu projektu:

Vysvětleme si, co tento příkaz provádí. Xcopy má dva hlavní parametry – zdroj kopírování a cíl kopírování. Moje složka sqlite je umístěna ve složce libs, která je ve stromové struktuře o úroveň výše než hlavní složka projektu (kterou specifikujeme řetězcem “$(ProjectDir)”) – tedy nejprve přejdu o úroveň výše sekvencí “..\”, pak odsud do “libs\sqlite\”. Zde musím vejít do podsložky odpovídající architektuře projektu. Odpovídající řetězec “x64”, “x86”, či jiný získáme makrem “$(PlatformName)”. Nyní konečně vybereme pro kopírování všechny soubory v této složce pomocí hvězdičky (“*”). Cílová složka pro kopírování je výstupní složka projektu, označovaná makrem “$(TargetDir)”. Nakonec ještě přidávám dvě volby: “/E” (aby se při kopírování zahrnuly mezi zdroje i podsložky) a “/Y” (abychom vždy přepsali existující soubory v cílové složce).

Nyní před každým sestavením projektu bude náš příkaz proveden a soubory zkopírovány. Vše probíhá automaticky bez nutnosti další manuální práce.

Na závěr ještě podotknu, že je možné samozřejmě provádět i více příkazů – každý prostě uveďte na nový řádek, a lze v pre-build a post-build akcích provádět takřka cokoliv co dovoluje příkazová řádka – není nutné se omezit na kopírování.

Barva motivu v ikonách na taskbaru Windows 10

Poslední buildy Technical Preview Windows 10 (konkrétně z veřejných 10547 a výše) získaly velmi zajímavou novinku u ikon systémových WinRT aplikací jako jsou Store, Outlook Mail, Outlook Kalendář a Fotky. Když se na ikony těchto aplikací v taskbaru podíváte blíže, zjistíte, že některé jejich části jsou vyplněny systémovou barvou motivu.

ColorizedColorizedBlue

Zajímalo mě, jak tohoto bylo dosaženo. Průhledná barva se používá na vytvoření “průhledných” částí ikony, ale jak se specifikují části pro nahrazení barvou motivu? Předpokládal jsem, že půjde o nějakou speciální “výchozí” barvu. A ukázalo se, že to byl předpoklad správný! PhotosAppIcon

Když se podíváte na obrázkové podklady aplikace Fotky, můžete si všimnout překvapivě velkého množství různých ikon typu “AppList” nebo “Square 44×44 Logo”, jak to je označováno ve Visual Studiu. Normální ikony pro odpovídající škálování zde najdeme po boku dalších se suffixem “.targetsize-{size}”. Tyto jsou nabízeny ve Visual Studiu pouze pro čtyři různé velikosti – 256, 48, 24 a 16 pixelů. Zřejmě je však možné poskytnout systému i další velikosti pro ještě granulárnější škálování – 100, 96, 80, 64, 40, 32 or 20 pixelů.

Ale zde to začíná být zajímavé! Mezi ikonami najdeme i další suffixy:

  • contrast-black_targetsize-{size} – bílá a transparentní ikona (pro režim vysokého kontrastu pro usnadnění přístupu)
  • contrast-white_targetsize-{size} – černá a transparentní ikona (pro režim vysokého kontrastu pro usnadnění přístupu)
  • targetsize-{size}_altform-colorize – ikona aplikace obarvená barvou motivu – to je ta, kterou jsme hledali!
  • targetsize-{size}_altform-unplated_contrast-white – ikona aplikace na taskbar s průhledností (pro režim vysokého kontrastu pro usnadnění přístupu)
  • targetsize-{size}_altform-unplated – ikona aplikace na taskbar s průhledností
  • targetsize-{size}_altform-fullcolor – ikony, které se používají pro souborové asociace v průzkumníku souborů – plnobarevné

To je velký počet nedokumentováných typů ikon 🙂 ! Ta která je pro nás ale nejzajímavější je targetsize-{size}_altform-colorize. Obrázky s touto koncovkou v názvu se skládají z průhledné barvy (která je potom na taskbaru – překvapivě – průhledná), z jakýchkoliv dalších barev (obvykle však bílé) a nakonec černé barvy, která je systémem nahrazena barvou motivu systému!

Přestože oficiální zdroje a dokumentace o těchto typech aplikačních ikon zatím nemluví, již nyní mouhou vývojáři tyto speciální typy ikon využívat ve svých aplikacích. Jediné, co pro to musíte udělat, je zahrnout další obrázky s odpovídajícím pojmenováním po bok ostatních ikon aplikace v balíčku a systém se již sám správně rozhodne, který z nich použít. Toto otevírá další prostor pro kreativitu vývojářů, aby jejich aplikace vypadaly na Windows 10 ještě živěji.

Ukázkový projekt

Zde si můžete stáhnout ukázkový projekt. Jde vlastně o úplně základní Windows 10 aplikaci vytvořenou pomocí prázdné šablony s pouze jedním obrázkovým souborem ve složce Assets navíc – Square44x44Logo.targetsize-64_altform-colorize.png. V tomto jediném souboru tkví celé kouzlo! Jakmile aplikaci spustíte, uvidíte na hlavním panelu vašeho systému velmi pěknou ikonu s barvou systémového motivu. Pokud si systémovou barvu změníte, ikona se změní také 🙂 .

Square44x44Logo.targetsize-64_altform-colorize

Průvodce Windows 10 pro vývojáře

Nyní je ta nejlepší chvíle naučit se vývoj aplikací pro Windows 10!

Microsoft vydal aktualizovanou verzi svého průvodce Univerzální Windows Platformou pro vývojáře (v angličtině) na Microsoft Virtual Academy. S pány Andym Wigleym a Shenem Chauhanem se v tomto tutoriálu podíváte na vše, co je nové ve vývojářském světě Windows 10 a uvidíte vývojářské nástroje pro “RTM” verzi Windows 10 (uvozovky proto, že koncept “RTM” ve světě Windows as a Service neexistuje a build 10240, kterého se videa týkají je pouze první vydání Windows 10 pro širokou veřejnost).

Průvodce pokrývá vše od základů platformy samotné, přes ovladací prvky XAML, adaptivní návrh a kód až po detaily a pokročilé techniky jako je koncept “Aplikačních služeb”.

Tak hurá do toho a naučte vyvíjet aplikace pro Windows 10!

Microsoft HoloLens na BUILD 2015

Letos jsem se již podruhé zúčastnil vývojářské konference Microsoft Build 2015 v San Franciscu. Mezi největší lákadla patřila rozhodně demonstrace Microsoft HoloLens – revolučních brýlí pro holografickou realitu, které přichází spolu s Windows 10 jako prvním operačním systémem pro tento typ zařízení. Měl jsem to velké štěstí, že jsem si HoloLens mohl vyzkoušet sám na vlastní oči a chtěl bych se nyní s vámi o mé zážitky podělit.

08023260-photo-hololens.jpg

Zaregistrujte se, rychle!

V keynote prvního dne konference bylo ohlášeno, že někteří z účastníků si budou moci sami vyzkoušet HoloLens. Vstupenkou k tomuto privilegiu byla registrace přes speciální rezervační stránku. Registrace byla otevřena ihned po skončení keynote a jak bylo předem avizováno z časových důvodů mohla pokrýt pouze malou část z více než šesti tisíc vývojářů, kteří se konference účastnili.

Proto jsem ihned, jak to bylo možné přešel na registrační web ve prohlížeči na svém telefonu (zpomalen extrémním vytížením všech dostupných Wi-Fi sítí kolem) a byla mi nabídnuta volba ze tří různých aktivit – Holografická Akademie, Holografická prezentace a HoloLens One on One. Z těchto tří byla aktivita One on One právě ztělesněním toho, co představovalo ukázkové video o HoloLens, takže jsem přirozeně chtěl vybrat tuto aktivitu. Bohužel, či spíše bohudík – když jsem ji vybral a chtěl svoji volbu potvrdit, můj prohlížeč (ve v té době ještě nestabilní alpha-verzi Microsoft Edge) rozhodl, že Holografická Akademie je lepší volbou a tu také odeslal. Nakonec jsem byl za tuto změnu rozhodně rád, protože právě Akademie byla z nabízených tří voleb tím nejpodrobnějším a nejdelším možným seznámením s HoloLens.

WP_20150428_10_00_56_Rich

Asi hodinu poté, těsně před obědem jsem obdržel e-mailem pozvánku na Holografickou Akademii, která měla začínat za pouhých 30 minut v blízkém pětihvězdičkovém hotelu. Neváhal jsem tedy, rychle vyzvednul balíček s oběděm a běžel na místo.

Přípravy

V hale hotelu netrpělivě vyčkávali všichni pozvaní na signál od členů týmu HoloLens, kteří postupně vpouštěli na vybrané aktivity. Skupina čekající na Holografickou Akademii byla zřejmě největší a tak i čekání tomu odpovídalo.

WP_20150429_13_19_32_Pro__highres

Když vše bylo připraveno, byli jsme vpuštěni do výtahů a ty nás zavezly do patra, které bylo vyhrazeno pro Microsoft k účelům demonstrace HoloLens.

Přímo v přední části vstupní haly byla skleněná kostka ve které jsme mohli vidět poprvé naživo Microsoft HoloLens samotný. Samozřejmě však platilo, že žádné dotýkání ani fotografování nebylo povoleno!

Následovala registrace, podpis smlouvy NDA a souhlas s faktem, že budeme natáčení na video za účelem záznamů a rozhovorů, které nyní můžete shlédnout na internetu. Navíc nám byl přidělen klíč k šatnové skříňce, kde jsme museli odložit své osobní věci a veškerá elektronická zařízení, která byla na místě konání akce přísně zakázána.

WP_20150704_14_43_46_Rich (2)

Také nám byly přiřazeny účastnické visačky a byla nám změřena vzdálenost mezi očima. Tato hodnota potom sloužila jako referenční pro základní nastavení HoloLens pro optimální kvalitu zobrazení.

Vítejte ve vývojářském ráji

Po vyřízení všech formalit a vytvoření dlouhé fronty všech účastníků jsme byli rozděleni do dvojic a každé dvojici byl přidělen “vedoucí” z řad týmu HoloLens. Tento vedoucí po zbytek odpoledne byl nápomocen v případě potíží nebo dotazů.

S naším vedoucím jsme poté vstoupili do místnosti, kde se měla odehrát samotná Holografická Akademie. Tato místnost byla středně velká konferenční hala s pódiem uprostřed a několika oddělených sekcí kolem něho. Každá ze sekcí sestávala z konferenčního stolku uprostřed a třech až čtyřech stolů kolem. U každého stolu mohli sedět dva účastníci u počítačů, které zde byly připraveny. Překvapením bylo, že nikde zatím nebyly žádné brýle HoloLens!

Atmosféra v místnosti byla skvělá. Očekávání bylo doslova hmatatelné a bylo zřejmé, že se nikdo nemůže dočkat až si bude moci vyzkoušet poprvé vstoupit do světa hologramů. Ve videu níže se můžete sami přesvědčit, jak to na Akademii vypadalo (mimochodem, v čase 0:06 můžete spatřit i mě 🙂 ).

Úvod

Jakmile všichni byli usazeni a dveře se zavřely, jeden z prezentátorů se ujal slova na pódiu a uvítal všechny účastníky. Po krátkém uvedení do toho, co můžeme očekávat a popisu zařízení a technologie, která jej pohání, byl každému z účastníků rozdán konečně jeho “vlastní” Microsoft HoloLens, který bude moci po zbytek odpoledne používat.

HoloLens byl v té době ještě ve své testovací fázi, ale vypadal téměř jako dokončený. Nevyžadoval již velkou baterii na zádech uživatele jako v předchozích demonstracích. Chybělo mu pouze fungující uživatelské prostředí Windows 10 Holographic, které ještě nebylo připraveno.

Náš vedoucí nám pomohl zařízení nakonfigurovat a nastavit jeho parametry přes webové rozhraní, které sloužilo jako dočasná náhrada za rozhraní operačního systému na HoloLens. Toto rozhraní navíc umožňovalo přímo instalovat aplikační balíčky APPX. Systém běžící na brýlích byl tedy v tu dobu vlastně pouze běhovým prostředím pro nahrané aplikace (podobně jako je to v případě Windows IoT).

Gradient-Windows-3d-Holographic-logo

Ahoj, hologramy

Po nastavení brýlí jsme na zařízení nahráli naši první ukázkovou aplikaci a mohli si brýle poprvé nasadit na hlavu. Prvním velkým překvapením byl fakt, že HoloLens jsou překvapivě lehké. Přestože jde o plnohodnotný a velmi výkonný počítač s velkým množstvím senzorů, velmi lehce sedí na hlavě a po korektním přizpůsobení jeho tvaru se vůbec neopírají o nos a jsou velmi pohodlné.

Ukázková aplikace nám nabídla možnost umístit do prostoru na jakýkoliv povrch malé autíčko a následně jej instruovat pomocí pohledu a gest ruky kam má jet. Autíčko se inteligentně vyhýbalo reálným překážkám kolem sebe a dokonce dokázalo seskočit z desky stolu na zem nebo přejet přes moji nohu přesně tak, jak by se chovalo skutečné autíčko na ovládání. Vše bylo nesmírně realistické a hologram auta byl schopen “vnímat” své okolí jako reálný fyzický objekt. Ten pocit, že něco takového je vytvářeno a zobrazováno v malém zařízení na mé hlavě byl opravdu neuvěřitelný. Doslova dech beroucí zážitek.

Musím se také zmínit o stabilitě holografického obrazu. Nezávisle na tom, jak moc jsem pohyboval hlavou nebo přecházel po kolem hologramu, autíčko bylo stále naprosto přesně na tom samém místě v reálném prostředí. Nechápu jak tým, který vytvořil HoloLens, dosáhl takové přesnosti, ale skutečně se zde smývá rozdíl mezi realitou a hologramy. Den před vyzkoušením HoloLens jsem měl navíc možnost otestovat i virtuální realitu s Oculus Rift, ale technologie Microsoftu zde v přesnosti vítězí na celé čáře.

Ano, jistě očekáváte, že okomentuji velikost zorného pole zařízení, což je popisováno jako hlavní nevýhoda HoloLens. Ano, zorné pole je menší než bylo v předchozích živých demech a ve videích a Microsoft toto veřejně zmiňuje jako věc, která v prvním vydání brýlí může být mírně limitující. Pravděpodobně jde primárně o problém způsobený životností baterie, ale můžeme očekávat, že v každém dalším vydání HoloLens se bude zorné pole postupně zlepšovat. Osobně však se přikláním k tomu, že pro normální použití byla velikost obrazu, který jsme měli možnost vidět více než dostatečná. Většina hologramů je viditelná bez potíží a pouze pro pohled zblízka se někdy stane, že dojde k “oříznutí” pohledu.

Let’s //build/!

Abychom byli přivedeni zpět do “reality” z našeho úžasu nad hologramy, ozval se hlasitý gong, který ohlašoval, že máme brýle odložit a sledovat dění na pódiu.

Prezentátor nás provedl plánem toho co nás čeká na Akademii. Cílem bylo krok za krokem vyvinout naši první holografickou aplikaci a stát se tak prvními na světě mimo Microsoft, kteří budou moci sestavit a otestovat svůj výtvor na HoloLens.

Hlavními nástroji, které nám byly nápomocny bylo Visual Studio a Unity – obojí v interní testovací verzi. Unity mělo navíc speciální HoloLens SDK, které obsahovalo připravené objekty pro vývoj holografických aplikací – jako například holografickou kameru nebo spatial mapping.

V průběhu odpoledne jsme vytvářeli jednoduchou aplikaci zvanou Project Origami.

Část první: Zobrazení hologramů

První fází bylo zobrazení 3D objektu v prostoru před námi. Jednoduše jsme mohli přetáhnout připravené objekty na scénu v Unity a umístit holografickou kameru. Pro prostor v případě holografických aplikací platí, že jednotky v Unity odpovídají metrům ve skutečnosti.

Po připravení scény jsme aplikaci exportovali jako Windows 10 aplikaci a následně řešení nahráli přes Visual Studio na HoloLens.

Část druhá: Pohled

První interakcí, kterou jsme přidali do naší aplikace byl pohled. Toto umožnilo HoloLens sledovat pohyb našich očí a dle toho zvýraznit přesně to místo, na které jsme se dívali.

Část třetí: Gesta

Druhou interakcí s modelem byla gesta – takzvaný “air tap“, což lze volně přeložit jako “ťuknutí ve vzduchu, které lze provést pohybem palce a ukazováčku.  V našem trojrozměrném modelu byly zobrazeny dvě papírové kuličky, které levitovaly ve vzduchu. Pohledem na ně a použitím gesta najednou začaly reagovat na okolní gravitaci a spadly dolů na zem. V tuto chvíli je ale zem nezastavila propadly se až dolů do nekonečna.

Část čtvrtá: Hlas

Dále jsme přidali hlasové ovládání jako alternativu k gestu rukou. Použitím hlasu jsme mohli říct papírovým kuličkám aby spadly dolů a navíc jsme takto mohli restartovat celou “scénu”. Přidání hlasu změnilo interakci na ještě více přirozenou a ukázalo jasně volnost, kterou HoloLens nabízí uživateli ve volbě způsobu vstupu, který v danou chvíli je nejvhodnější. Navíc zařízení reaguje právě a pouze na váš hlas a nenechá se zmást okolním hlukem ani kolegy, kteří zrovna shodou náhod vyslovují přesně stejné příkazy.

Část pátá: Spatial mapping

Aby hologramy byly schopny rozpoznat a interagovat se svým okolím, je nutné přidat spatial mapping. Toto byl opět jeden z předpřipravených “pluginů” v HoloLens SDK v Unity. Stačilo jej přidat a bylo hotovo – mohli jsme umístit náš hologram na jakýkoliv vodorovný povrch kolem nás a papírové kuličky již nepropadaly skrz podlahu, ale správně narážely do okolí včetně stolu a pohovky.

Také jsme měli možnost se podívat, jak HoloLens “vidí” okolní svět. Spatial mapping vytváří síťovou reprezentaci okolního světa a velmi přesně pokrývá tvary objektů v něm.

Část šestá: prostorový zvuk

Celý zážitek jsme poté ještě více umocnili přidáním prostorového zvuku. Zaprvé, hologram samotný vyzařoval klidnou, relaxující hudbu a zadruhé jsme přidali zvukové efekty k papírovým kuličkám tak, aby při dopadu a jejich kutálení zněly jako skutečný papír.

HoloLens má skvělý zabudovaný prostorový zvukový systém, takže uživatel skutečně slyší zvuk jako by vycházel ze správné vzdálenosti a směru. Když se otočíte zády, zvuk zní přesně tak, jak by zněl kdyby byl “za vámi”. Když se přiblížíte, je hlasitější. Zní to možná jako malý detail, ale velmi výrazně to celému hologramu přidá na skutečnosti.

Část sedmá: Bonus!

Celý projekt jsme dokončili malým bonusem, který pro nás tým připravil – přidáním nového, blíže nespecifikovaného objektu na scénu v projektu. Po následném spuštění aplikace a puštění papírové kuličky k zemi došlo po kontaktu s podlahou k výbuchu, po kterém bylo ve vzniklé trhlině v zemi možné prohlédnou dolů pod nás do fantastického světa plného živých papírových jestřábů létajících nad zelenou krajinou.

Celkové dojmy

Microsoft HoloLens je skutečně neuvěřitelná technologie, která zní, vypadá a chová se jako z budoucnosti. Byl jsem opravdu překvapen výkonem a potenciálem, který se v zařízení skrývá a jsem si jistý, že stejný pocit se dostane každému, kdo si brýle bude moci vyzkoušet.

Vývoj aplikací pro HoloLens je velmi jednoduchý. Můžete vyvinout klasickou Windows 10 Univerzální aplikaci. Všechny klasické aplikace budou na HoloLens fungovat bez větších změn. Pokud ale budete chtít opustit svět druhé dimenze, což rozhodně doporučuji, jistě uvítáte vývojové prostředí Unity, které vám nabízí jednoduché SDK a možnost rychlého vývoje vašich prvních holografických aplikací v jazyce C#.

První vydání HoloLens se již blíží a nemohu se dočkat, jak se zařízení bude vyvíjet a jaké kreativní způsoby využití si najde nejen pro koncové uživatele, ale také firmy a třeba lékařství.

Microsoft přinesl opravdovou revoluci.

Windows 10

Microsoft Windows 10 byl vydán 29. července 2015.

Nejnovější iterace nejpoužívanějšího operačního systému pro počítače přináší velké množství vylepšení a nových funkcí, které z něj dělají perfektní volbu pro každého, kdo používá některou z předchozích verzí Windows nebo zastaralý operační systém jako je Mac OS X.

Nejlepší ze všeho – Windows 10 je zdarma pro všechny uživatele Windows 7 a Windows 8, kteří upgradují v prvním roce od uvedení.

Jeden Windows

Nejdůležitější vlastností Windows 10 pro mě jako vývojáře a uživatele je fakt, že Windows je nyní jeden a ten samý operační systém na všech zařízeních – telefony, tablety, notebooky, desktopy, Internet of Things zařízení, pracovní stanice Surface Hub, Microsoft HoloLens i Xbox One – vaše aplikace budou fungovat všude! Microsoft dokázal něco neuvěřitelného – jednotné API a runtime, který pokrývá každé zařízení ve vašem životě. A ještě lépe – aplikace se mohou snadno přizpůsobit právě tomu zařízení, na kterém právě běží a mohou tak využívat jeho unikátních vlastností.

Gallo-blog-1-v2

Žádná jiná společnost (ani Google ani Apple) tohoto nemůže nikdy dosáhnout. Žádná z nich nemá operační systém, který pokrývá tak rozličnou škálu zařízení a už vůbec ne aplikační runtime, který umožní té samé aplikaci kdekoliv bez jakýchkoliv změn. To je obrovská výhoda jak pro uživatele, tak pro vývojáře a zaručeně přinese obrovské množství aplikací pro Windows.

Mimochodem – víte, že Android a iOS aplikace budou moci běžet na Windows 10? Překvapeni? Ne – toto je Microsoft. Nyní není žádný důvod, aby vývojáři nepřinesli své aplikace na Windows a rázem má tak Windows Store potenciál stát se největším aplikačním obchodem ze všech – vydání existující aplikace z jiného systému bude otázkou několika minut.

Start je zpět

Musím se přiznat – Windows 8 byl dle mého názoru výborný. Většina lidí se neztotožňovala s novým uživatelským rozhraním, které přinášel, ale mně se líbil moderní a svěží přístup, který tento operační systém ztělesňoval.

Přesto, Windows 10 se mi líbí ještě více, pokud je to vůbec možné.

WIndows-10-Start-Menu

Start menu se nyní chová přesně tak, jak to dává smysl pro zařízení, které právě používáte a pro styl práce, který nyní potřebujete. Chcete malé kontextové menu na ploše? Je tady. Chcete celoobrazkový režim pro práci jako na tabletu? Je tady také.

Nové Start menu navíc přirozeně smazává hranice mezi světem dlaždic a klasickými aplikacemi a celkový výsledek je velmi intuitivní.

Moderní aplikace tentokrát správně

Jednou z největších kritik Windows 8 bylo to, že už to nebyly “windows” (okna). Moderní aplikace běžely v režimu celé obrazovky a neintegrovaly se snadno s klasickým desktopovým workflow.

Toto se s Windows 10 drasticky mění. Moderní aplikace jsou nativními obyvateli vaší plochy a chovají se přesně tak, jak očekáváte s plnou podporou změny velikosti, možností otevřít více oken současně, funkcí drag and drop a dalšími.

Navíc i všechny “staré” Windows 8 aplikace fungují tak, jak očekáváte bez nutnosti změn. Protože byly napsány s podporou “snap” módu v minulé verzi systému, změny velikosti okna podporují i zde. To je výrazný rozdíl oproti systému jako je Apple iOS, který až nyní představil polovičatý a nedokonalý multitasking pro iPad (tedy alespoň pro nejnovější model – potřebují přece vydělat, ne?), který vyžaduje v drtivém množství případů kompletní přepsání uživatelského rozhraní aplikací.

Continuum

Současný trh PC je plný zařízení, které lze popsat jako “hybridní” nebo “2 v 1”, příkladem může být Microsoft Surface Pro. Taková zařízení nabízí tradiční podobu notebooku, ale mohou být transformovány do podoby tabletu.

Zatímco Windows 8 byl systém optimalizovaný primárně pro dotyková zařízení a nenabízel úplně to optimální chování pro uživatele s klávesnicí a myší, Windows 10 je úplně jiný.

Windows 10 se logicky a funkčně adaptuje dle způsobu, jak v danou chvíli využíváte počítač. Jak jsem již zmínil, to automaticky zahrnuje podobu menu Start, ale navíc i chování a vzhled aplikací. V módu tabletu, který se automaticky spustí po odpojení nebo přetočení klávesnice, jsou všechny aplikace převedeny do full-screen módu, což je logický přístup pro tabletové použití. Můžete navíc stále využívat multitasking dvou aplikací vedle sebe. Ve chvíli, kdy potřebujete náročnější pracovní stanici, stačí připojit znovu klávesnici a přejít do klasického módu plochy s okny. Tento přechod je přirozený – přesně to co očekáváte od operačního systému, který perfektně rozumí vašim potřebám.

Tento příběh je však ještě zajímavější v případě mobilních telefonů. Nová zařízení s Windows 10 Mobile umožní připojit telefon k obrazovce a následně jej využívat jako plnohodnotný počítač. To je snem každého business uživatele. Jedno zařízení, které vystačí na opravdu každý úkon.

Cortana

První a jediná osobní hlasová asistentka Cortana přichází na PC. Všechny funkce, které znáte z mobilního telefonu jsou zde – její vtipné poznámky a odpovědi, počasí, připomenutí, informace o sportu a cestování, sledování financí a mnoho dalšího. Navíc disponuje novými funkcemi jako psaním rychlých e-mailových zpráv a vyhledáváním nápovědy a tipů pro používání Windows.

cortana-windows-10A to je vše jen začátek! Když nyní bude Cortana dostupná na všech operačních systémech včetně iOS (ano i iPad) a Android (s možností kompletně nahradit Google Now), můžeme očekávat rychlé tempo v zlepšování jejích schopností a inteligence. Cortana se o vás učí (samozřejmě s tím, že všechny informace, které sbírá můžete kdykoliv povolit nebo zakázat), takže může proaktivně pomáhat právě s tím, na čem vám záleží.

Microsoft Edge

Nový Prohlížeč (P úmyslně velké). Microsoft se rozhodl ukončit vývoj Internet Exploreru, aby mohl přinést úplně nový prohlížeč pro Windows 10, který je srovnatelný a lepší než všechny ostatní prohlížeče na trhu. S automatickými aktualizacemi a nejnovějšími vlastnostmi je Microsoft Edge ta nejlepší věc, která se udála ve světě brouzdání internetem na Windows. Přestože je Edge stále v první fázi vývoje, je již nyní velmi stabilní a nabízí rychlé a přívětivé uživatelské rozhraní.

Snap assist

Windows 7 přinesl pro produktivitu na PC revoluční funkci pro připínání aplikací na strany obrazovky. Takto umožnil rozdělit obrazovku na poloviny pro dvě různé aplikace. Windows 10 toto vylepšuje s funkcí Snap assist.

snap_assist-1346fcb1683747c5

Tato funkce jde mnohem dál než její předchůdce a nabízí připínání oken do rohů obrazovky a také nabízí přímo uživateli volbu jakou aplikací vyplnit zbývající prostor na obrazovce. Může se zdát, že jde o malé vylepšení, ale výrazně zlepšuje každodenní používání systému.

Windows Feedback

Toto je důvod, proč je Windows 10 tak skvělý.

V kontrastu s přístupem Apple a Google, kdy se v systému dějí změny bez ohledu na přání a potřeby uživatelů, Microsoft se rozhodl jít úplně jinou cestou vývoje nové iterace Windows. Windows 10 byl od samého počátku vytvářen s přímou zpětnou vazbou uživatelů. Microsoft oznámil beta testování systému pro nadšence, kteří si říkají Windows Insiders.

Capture

Přes speciální aplikaci Windows Feedback v systému mohou i nyní všichni uživatelé posílat své nápady a návrhy na změny přímo Microsoftu. Všechna zpětná vazba je zvažována a použita pro vylepšení systému, takže byste se rozhodně měli zapojit, zaslat svůj názor a hlasovat pro dobré nápady, protože to skutečně má velký smysl!

Do

Windows je pro ty, kteří “dělají”, ať již jste IT profesionál, business, vývojář, hráč nebo koncový uživatel. Windows 10 hravě zvládne všechny vaše potřeby.

A ano, Microsoft je zase cool.

Windows_Insider_Ninjacat_Trex-1600x900

 

Náhrada [ExpectedException] ve WinRT Test Library

Při psaní unit testů pro Windows Store aplikaci jsem zapisoval test, který kontroloval, zda kód vyvolá očekávanou výjimku. Pro non-WinRT projekty je možné použít kód následujícího typu:

Z Unit Test Library pro WinRT byl ale atribut ExpectedException  odebrán. Byl však nahrazen mnohem praktičtější a užitečnější metodou Assert.ThrowsException :

Jako typový parametr stačí uvést typ očekávané výjimky a jako argument použijeme lambda expression (či instanci Action ), která obsahuje kód, jež má výjimku vyvolat.

Přístup k WebView cookies ve WinRT

Při vývoji mé Windows 8.1 aplikace jsem potřeboval využít ASP.NET Identity pro autentizaci v ASP.NET Web API službě. Protože Identity kromě klasického lokálního přihlašování nabízí i možnost sociálního (externího) přihlašování přes Facebook, Microsoft Account a další, rozhodl jsem se implementovat i tuto funkčnost. Bohužel, autentizace tímto způsobem vyžadovala využití cookies, které musí být následně přeposlány dál na endpoint, který dokončí registraci nového uživatele. Protože této proces je nutné začít v ovládacím prvku WebView, potřebujeme z něho získat potřebné cookie. WebView ale žádné metody ani vlastnosti, které by se k tomuto účelu daly využít nenabízí. Jak to můžeme vyřešit?

Pokračovat ve čtení “Přístup k WebView cookies ve WinRT”

StorageApplicationPermissions ve WinRT

Windows 8 a Windows Phone 8.1 mají z důvodu maximalizace bezpečnosti velmi omezené API na přístup k souborům. Po nastavení některých Capabilities aplikace v jejím manifestu můžete sice přistupovat k několika základním pseudo-složkám – tedy knihovnám Obrázky, Hudba a Videa (plus enterprise aplikace na Windows 8 k Dokumentům), ale přístup k dalším složkám a souborům je již komplikovaný. Na záchranu ale přichází třída StorageApplicationPermissions . Pokračovat ve čtení “StorageApplicationPermissions ve WinRT”