SlideShare uma empresa Scribd logo
1 de 32
STRASTI A SLASTI VÝVOJE WP7
APLIKACÍ. I MANGO CHUTNÁ
HOŘKOSLADCE.




René Stein
http://blog.renestein.net
http://www.twitter.com/renestein
Windows Phone 7 Mango

 Ať teď budu říkat cokoli, vězte, že technologie
  Microsoftu mám rád. 
 …Ale každý vztah projde krizí.
Jak nejlépe popsat Windows
Phone 7?
 Windows Phone 7 jsou
  jako vstupenka do
  luxusně vybaveného
  exkluzivního bordelu,
  kterou jste zakoupili na
  podřadném slevovém
  serveru, a teprve na místě
  jste zjistili, že služby vám
  poskytne jen vrátný nebo
  tlustá kuchařka (ta ale až
  po výronu releasu
  Mango).
Windows Phone 7

 Je něco, co vám při vývoji ve Windows Phone
  chybí?
 Silverlight/XNA Windows Phone 7 nahrazují
  Compact .Net Framework ve WM. Nahrazují?
 Já jsem si vždy myslel, že slovo pokrok (i
  COOL pokrok plný nadšených dlaždic s
  rozkošnými animacemi všude, kam se
  podíváte) znamená pro vývojáře progres , a
  ne v mnoha případech regres…
Dlaždice ve Windows Phone 7 si
vývojář zamiluje
Bajka o nativním kódu a
důslednosti Microsoftu
 Microsoft nedovoluje programovat aplikace
  nativním kódu.
   Náročné hry
   Rychlé portování jádra navigace na WP7




 Na konferenci Build se ale mluví o renesanci
  C++ a nativního kódu na desktopu, přesto na
  WP je vývojářům nativní kód upírán.
Nativní kód nepotřebujeme -
Sygic




 Zdroj: http://www.pocketgpsworld.com/Sygic-
 Mobile-Maps-Becomes-Aura-and-loses-POI-
 support-8645.php
Nativní kód nikdo ve WP
nepožaduje - TomTom




 Zdroj: http://wmpoweruser.com/ifa-2011-tomtom-for-windows-phone-7/
Velký útěk z „managed kódu“
do nativního kódu
  • COM Bridge
  •Zpět k Windows CE




 •Ale do market place nám
 potom nelez….
Jedno z pravidel vývoje na
WP7
 Dostanete nápad na skvělou aplikaci,
     Uživatelé by z aplikace hýkali nadšením, jste si jisti
     UI máte rozmyšleno
     Řvete „startup“ i ze spaní
     Píšete si tiskové zprávy „nanečisto“
     Bankovní konto připraveno na nadstandardní příjem



  …A poté zjistíte, že není k
   dispozici potřebné API
API pro zjištění detailního
stavu baterie

WP7 nám nabízí jen tohle volání:

  PowerSource.Text
  = DeviceStatus.PowerSource.ToString();
Hlas lidu vývojářského…
Also there are many completely useless apps in Marketplace (countless
converters, "flashlights", calculators and other BS), so what? Streaming
video player, unfortunately, "eating" battery too quickly. MS didn't
provide a good system status bar with info (which can be displayed as
overlay on top in landscape mode, semitransparent etc.), just an ugly
hardcoded portrait mode status bar, what ruins the full screen layout!
But if you in full screen mode, and watching a long movie, it's very
important to know how much battery you have (for example, you've
expecting an important call). I'm telling that from my own experience
from my own working solution, not from usual forum's blah-blah-blah...




      Zdroj:
      http://forums.create.msdn.com/forums/p/758
      63/542348.aspx
Jak je na tom Android?
•Gauge Battery Widget
•Autor: Tomáš Hubálek




  https://market.android.com/details?id=net.hubalek.android.gaugebattwidg
  et
API pro práci s WIFI
Co nám nabízejí WP7?

ConnectionSettingsTask
  connectionSettingsTask
  = new ConnectionSettingsTask();
connectionSettingsTask.ConnectionSettingsTy
  pe = ConnectionSettingsType.WiFi;
connectionSettingsTask.Show();
API pro práci s bluetooth –
hlas lidu



Zdroj:
http://forums.create.msdn.com/forums/t/7764
4.aspx




Zdroj:
http://stackoverflow.com/questions/6067669/api-to-
support-bluetooth-in-mango
Co umí Windows CE? Winsock
Extensions
   socket (Bluetooth)
   bind (Bluetooth)
   getsockname (Bluetooth)
   getpeername (Bluetooth)
   connect (Bluetooth)
   accept (Bluetooth)
   getsockopt (Bluetooth)
   setsockopt (Bluetooth)
   ……
Služby, které se spustí po
startu počítače?

 PeriodicTask periodicTask = new PeriodicTask(„MyAppTask");
 periodicTask.Description = „Moje služba";
 periodicTask.ExpirationTime = DateTime.Now.AddDays(10);
 if (ScheduledActionService.Find(periodicTask.Name) != null)
 {
    StopBackgroundTask();
 }
 ScheduledActionService.Add(periodicTask);
Databáze a Linq2Sql
Výběr dalších věcí, na které
můžete zapomenout
 RIL
 TAPI
 RAPI
 Multitasking
A existující API – chyby
   jsou všude, ale:
 Když vám přestane skrolovat listbox, máte
  přiliš složitý layout stránky.
 AdControl shodí aplikaci
http://community.microsoftadvertising.com/for
  ums/p/70419/103698.aspx

 Ukázka nepříjemného API –
  WebBrowser.NavigateToString(html)
Tipnete si, co dělá tento
kód?
Sdílení kódu mezi
Silverlightem, WP7.x a NF?
 Sdílení soborů přes Add as link v
    samostatných projektech pro každou
    platformu
   #if !SILVERLIGHT
   #if WP
   #if !WP
   #if SILVERLIGHT
#if SILVERLIGHT

using System.Threading;
using System.Windows;
using System.Windows.Threading;

namespace RStein.Posterous.API
{

 public static class SilverlightSpecificHelper
 {
   public static bool IsUiThread()
   {
     return Deployment.Current.CheckAccess();
   }
 }

}
#endif
Ukázka třídy WebRequest –
pouze asynchronní volání v
Silverlightu a WP7!
Abych jen nepomlouval-ve WP7
je dostupný RX Framework
RX Framework v akci
ELOPOCALYPSE NOW?
René Stein
Vývoj aplikací, veřejné a inhouse
kurzy
http://www.renestein.net/nabidka.aspx

http://blog.renestein.net
http://www.twitter.com/renestein



 DOTAZY?
 A MOŽNÁ ODPOVĚDI? 

Mais conteúdo relacionado

Semelhante a Strasti a slasti vývoje wp7 aplikací

Nette: jak rozbít atom?
Nette: jak rozbít atom?Nette: jak rozbít atom?
Nette: jak rozbít atom?David Grudl
 
Softwarově definované úložiště
Softwarově definované úložištěSoftwarově definované úložiště
Softwarově definované úložištěLudek Safar
 
Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Jan Mittner
 
Novinky v Mango a Tango, propojení Silverlight a XNA na Windows Phone
Novinky v Mango a Tango, propojení Silverlight a XNA na Windows Phone Novinky v Mango a Tango, propojení Silverlight a XNA na Windows Phone
Novinky v Mango a Tango, propojení Silverlight a XNA na Windows Phone Tomáš Slavíček
 
Product API in MallGroup
Product API in MallGroupProduct API in MallGroup
Product API in MallGroupJan Blaško
 
Rockaway AWS Hackaton – Kick-off Meeting
Rockaway AWS Hackaton – Kick-off MeetingRockaway AWS Hackaton – Kick-off Meeting
Rockaway AWS Hackaton – Kick-off MeetingRockawayCapital
 
Web Site Troubleshooting Guidance V1 0 Cze
Web Site Troubleshooting Guidance V1 0 CzeWeb Site Troubleshooting Guidance V1 0 Cze
Web Site Troubleshooting Guidance V1 0 Czedbox
 
Přechod na Windows 10 - jak na to ve firemních sítích
Přechod na Windows 10 - jak na to ve firemních sítíchPřechod na Windows 10 - jak na to ve firemních sítích
Přechod na Windows 10 - jak na to ve firemních sítíchMarketingArrowECS_CZ
 
Využití TFS jako jednotného úložiště pro heterogenní vývoj (Android, iOS, Win...
Využití TFS jako jednotného úložiště pro heterogenní vývoj (Android, iOS, Win...Využití TFS jako jednotného úložiště pro heterogenní vývoj (Android, iOS, Win...
Využití TFS jako jednotného úložiště pro heterogenní vývoj (Android, iOS, Win...Ludek Trefny
 
Android - vývoj, distribuce a propagace
Android - vývoj, distribuce a propagaceAndroid - vývoj, distribuce a propagace
Android - vývoj, distribuce a propagaceAvast Software
 
Programování her v XNA pro Windows Phone 7
Programování her v XNA pro Windows Phone 7Programování her v XNA pro Windows Phone 7
Programování her v XNA pro Windows Phone 7Tomáš Slavíček
 
node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)almadcz
 
Programování pro Android - úvod, FI MUNI, 2013
Programování pro Android - úvod, FI MUNI, 2013Programování pro Android - úvod, FI MUNI, 2013
Programování pro Android - úvod, FI MUNI, 2013Tomáš Kypta
 
Rockaway AWS Hackaton – Kick-off Meeting Brno
Rockaway AWS Hackaton – Kick-off Meeting BrnoRockaway AWS Hackaton – Kick-off Meeting Brno
Rockaway AWS Hackaton – Kick-off Meeting BrnoRockawayCapital
 
Myty a realita_mobilnich_platforem
Myty a realita_mobilnich_platforemMyty a realita_mobilnich_platforem
Myty a realita_mobilnich_platforemRené Stein
 
20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitněJiří Mareš
 

Semelhante a Strasti a slasti vývoje wp7 aplikací (20)

Nette: jak rozbít atom?
Nette: jak rozbít atom?Nette: jak rozbít atom?
Nette: jak rozbít atom?
 
Softwarově definované úložiště
Softwarově definované úložištěSoftwarově definované úložiště
Softwarově definované úložiště
 
Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011
 
Novinky v Mango a Tango, propojení Silverlight a XNA na Windows Phone
Novinky v Mango a Tango, propojení Silverlight a XNA na Windows Phone Novinky v Mango a Tango, propojení Silverlight a XNA na Windows Phone
Novinky v Mango a Tango, propojení Silverlight a XNA na Windows Phone
 
Product API in MallGroup
Product API in MallGroupProduct API in MallGroup
Product API in MallGroup
 
Rockaway AWS Hackaton – Kick-off Meeting
Rockaway AWS Hackaton – Kick-off MeetingRockaway AWS Hackaton – Kick-off Meeting
Rockaway AWS Hackaton – Kick-off Meeting
 
TNPW2-2014-05
TNPW2-2014-05TNPW2-2014-05
TNPW2-2014-05
 
Web Site Troubleshooting Guidance V1 0 Cze
Web Site Troubleshooting Guidance V1 0 CzeWeb Site Troubleshooting Guidance V1 0 Cze
Web Site Troubleshooting Guidance V1 0 Cze
 
Přechod na Windows 10 - jak na to ve firemních sítích
Přechod na Windows 10 - jak na to ve firemních sítíchPřechod na Windows 10 - jak na to ve firemních sítích
Přechod na Windows 10 - jak na to ve firemních sítích
 
Využití TFS jako jednotného úložiště pro heterogenní vývoj (Android, iOS, Win...
Využití TFS jako jednotného úložiště pro heterogenní vývoj (Android, iOS, Win...Využití TFS jako jednotného úložiště pro heterogenní vývoj (Android, iOS, Win...
Využití TFS jako jednotného úložiště pro heterogenní vývoj (Android, iOS, Win...
 
Android - vývoj, distribuce a propagace
Android - vývoj, distribuce a propagaceAndroid - vývoj, distribuce a propagace
Android - vývoj, distribuce a propagace
 
Programování her v XNA pro Windows Phone 7
Programování her v XNA pro Windows Phone 7Programování her v XNA pro Windows Phone 7
Programování her v XNA pro Windows Phone 7
 
node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)
 
Programování pro Android - úvod, FI MUNI, 2013
Programování pro Android - úvod, FI MUNI, 2013Programování pro Android - úvod, FI MUNI, 2013
Programování pro Android - úvod, FI MUNI, 2013
 
Rockaway AWS Hackaton – Kick-off Meeting Brno
Rockaway AWS Hackaton – Kick-off Meeting BrnoRockaway AWS Hackaton – Kick-off Meeting Brno
Rockaway AWS Hackaton – Kick-off Meeting Brno
 
7 omylu v IT bezpečnosti
7 omylu v IT bezpečnosti7 omylu v IT bezpečnosti
7 omylu v IT bezpečnosti
 
Myty a realita_mobilnich_platforem
Myty a realita_mobilnich_platforemMyty a realita_mobilnich_platforem
Myty a realita_mobilnich_platforem
 
20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně
 
Mobile First v praxi
Mobile First v praxiMobile First v praxi
Mobile First v praxi
 
Clanek intelvpro
Clanek intelvproClanek intelvpro
Clanek intelvpro
 

Strasti a slasti vývoje wp7 aplikací

  • 1. STRASTI A SLASTI VÝVOJE WP7 APLIKACÍ. I MANGO CHUTNÁ HOŘKOSLADCE. René Stein http://blog.renestein.net http://www.twitter.com/renestein
  • 2. Windows Phone 7 Mango  Ať teď budu říkat cokoli, vězte, že technologie Microsoftu mám rád.   …Ale každý vztah projde krizí.
  • 3. Jak nejlépe popsat Windows Phone 7?  Windows Phone 7 jsou jako vstupenka do luxusně vybaveného exkluzivního bordelu, kterou jste zakoupili na podřadném slevovém serveru, a teprve na místě jste zjistili, že služby vám poskytne jen vrátný nebo tlustá kuchařka (ta ale až po výronu releasu Mango).
  • 4. Windows Phone 7  Je něco, co vám při vývoji ve Windows Phone chybí?  Silverlight/XNA Windows Phone 7 nahrazují Compact .Net Framework ve WM. Nahrazují?  Já jsem si vždy myslel, že slovo pokrok (i COOL pokrok plný nadšených dlaždic s rozkošnými animacemi všude, kam se podíváte) znamená pro vývojáře progres , a ne v mnoha případech regres…
  • 5. Dlaždice ve Windows Phone 7 si vývojář zamiluje
  • 6. Bajka o nativním kódu a důslednosti Microsoftu  Microsoft nedovoluje programovat aplikace nativním kódu.  Náročné hry  Rychlé portování jádra navigace na WP7  Na konferenci Build se ale mluví o renesanci C++ a nativního kódu na desktopu, přesto na WP je vývojářům nativní kód upírán.
  • 7. Nativní kód nepotřebujeme - Sygic Zdroj: http://www.pocketgpsworld.com/Sygic- Mobile-Maps-Becomes-Aura-and-loses-POI- support-8645.php
  • 8. Nativní kód nikdo ve WP nepožaduje - TomTom Zdroj: http://wmpoweruser.com/ifa-2011-tomtom-for-windows-phone-7/
  • 9.
  • 10. Velký útěk z „managed kódu“ do nativního kódu • COM Bridge •Zpět k Windows CE •Ale do market place nám potom nelez….
  • 11. Jedno z pravidel vývoje na WP7  Dostanete nápad na skvělou aplikaci,  Uživatelé by z aplikace hýkali nadšením, jste si jisti  UI máte rozmyšleno  Řvete „startup“ i ze spaní  Píšete si tiskové zprávy „nanečisto“  Bankovní konto připraveno na nadstandardní příjem …A poté zjistíte, že není k dispozici potřebné API
  • 12. API pro zjištění detailního stavu baterie WP7 nám nabízí jen tohle volání: PowerSource.Text = DeviceStatus.PowerSource.ToString();
  • 13. Hlas lidu vývojářského… Also there are many completely useless apps in Marketplace (countless converters, "flashlights", calculators and other BS), so what? Streaming video player, unfortunately, "eating" battery too quickly. MS didn't provide a good system status bar with info (which can be displayed as overlay on top in landscape mode, semitransparent etc.), just an ugly hardcoded portrait mode status bar, what ruins the full screen layout! But if you in full screen mode, and watching a long movie, it's very important to know how much battery you have (for example, you've expecting an important call). I'm telling that from my own experience from my own working solution, not from usual forum's blah-blah-blah... Zdroj: http://forums.create.msdn.com/forums/p/758 63/542348.aspx
  • 14. Jak je na tom Android? •Gauge Battery Widget •Autor: Tomáš Hubálek https://market.android.com/details?id=net.hubalek.android.gaugebattwidg et
  • 15. API pro práci s WIFI
  • 16. Co nám nabízejí WP7? ConnectionSettingsTask connectionSettingsTask = new ConnectionSettingsTask(); connectionSettingsTask.ConnectionSettingsTy pe = ConnectionSettingsType.WiFi; connectionSettingsTask.Show();
  • 17. API pro práci s bluetooth – hlas lidu Zdroj: http://forums.create.msdn.com/forums/t/7764 4.aspx Zdroj: http://stackoverflow.com/questions/6067669/api-to- support-bluetooth-in-mango
  • 18. Co umí Windows CE? Winsock Extensions  socket (Bluetooth)  bind (Bluetooth)  getsockname (Bluetooth)  getpeername (Bluetooth)  connect (Bluetooth)  accept (Bluetooth)  getsockopt (Bluetooth)  setsockopt (Bluetooth)  ……
  • 19. Služby, které se spustí po startu počítače? PeriodicTask periodicTask = new PeriodicTask(„MyAppTask"); periodicTask.Description = „Moje služba"; periodicTask.ExpirationTime = DateTime.Now.AddDays(10); if (ScheduledActionService.Find(periodicTask.Name) != null) { StopBackgroundTask(); } ScheduledActionService.Add(periodicTask);
  • 21. Výběr dalších věcí, na které můžete zapomenout  RIL  TAPI  RAPI  Multitasking
  • 22. A existující API – chyby jsou všude, ale:  Když vám přestane skrolovat listbox, máte přiliš složitý layout stránky.  AdControl shodí aplikaci http://community.microsoftadvertising.com/for ums/p/70419/103698.aspx  Ukázka nepříjemného API – WebBrowser.NavigateToString(html)
  • 23. Tipnete si, co dělá tento kód?
  • 24. Sdílení kódu mezi Silverlightem, WP7.x a NF?  Sdílení soborů přes Add as link v samostatných projektech pro každou platformu  #if !SILVERLIGHT  #if WP  #if !WP  #if SILVERLIGHT
  • 25. #if SILVERLIGHT using System.Threading; using System.Windows; using System.Windows.Threading; namespace RStein.Posterous.API { public static class SilverlightSpecificHelper { public static bool IsUiThread() { return Deployment.Current.CheckAccess(); } } } #endif
  • 26. Ukázka třídy WebRequest – pouze asynchronní volání v Silverlightu a WP7!
  • 27. Abych jen nepomlouval-ve WP7 je dostupný RX Framework
  • 30.
  • 31.
  • 32. René Stein Vývoj aplikací, veřejné a inhouse kurzy http://www.renestein.net/nabidka.aspx http://blog.renestein.net http://www.twitter.com/renestein DOTAZY? A MOŽNÁ ODPOVĚDI? 