Autópálya információk SMS-ben

Biztos sokak által ismert, hogy az autópályákkal kapcsolatos aktuális információk SMS-ben is lekérdezhetőek. Én nem vagyok SMS rajongó, főként vezetés közben nem, ezért inkább készítettem egy Windows Mobile alkalmazást.

A protokoll nagyon egyszerű, SMS-t kell küldeni a +36 70 7774636 számra M0, M1, M3 vagy M7 tartalommal és általában 2 SMS-ben jön a válasz (valamikor később). Windows Mobile 5-től kezdve .NET Compact Framework segítségével könnyen megy az SMS küldés: a Microsoft.WindowsMobile.PocketOutlook névtérben lévő SmsMessage osztályt jól kitalálták:

    SmsMessage message = new SmsMessage();
    message.To.Add( new Recipient( this.txtPhoneNumber.Text ) );
    message.Body = speedwayName;
    message.RequestDeliveryReport = this.chkReceipt.Checked;
    message.Send();        
A felhasználói felület megalkotása mindig kényes egy mobil alkalmazás esetén, így elgondolkodtam azon, hogy hogyan akarom a válasz SMS-eket megjeleníteni. A Microsoft.WindowsMobile.PocketOutlook.MessageInterceptor osztály lehetőséget ad arra, hogy az alkalmazásom értesítést kapjon, ha beérkezik egy üzenet, de így az olvasást biztosító felhasználói felület megvalósítása az én feladatom maradna. Az alapértelmezett buborékos megjelenítéshez használt rendszerfont mérete szerencsére elég nagy ahhoz, hogy még vezetés közben is el tudjam olvasni. Ráadásul így bezárhatom az alkalmazást, visszatérhetek a GPS-hez, ami praktikus, hiszen a válaszok sokszor percekkel később jönnek.

A másik felhasználói felülettel kapcsolatos kérdés az volt, hogy hogyan akarom a kérést elküldeni. Egy desktop alkalmazásnál nem probléma, combo boxból kiválasztom, hogy melyik autópálya érdekel és egy gombra kattintva indul is az SMS. Vezetés közben viszont kizárt, hogy ezt meg tudjam tenni, így a bazi nagy gombos megvalósítást követtem, így nem kell stylus, elég az ujjam, bármilyen nagy is. Némi Mio-szerű fekete dizájnnal megspékelve ilyen lett a főablak:

SpeedwayInfo Main ablak

Mivel a telefonszám nem sűrűn változik, ezért a gyors megoldást választottam, bedrótoztam az alkalmazásba.

Probléma volt, hogy a sikeres vagy sikertelen SMS küldésről hogyan adok visszajelzést a felhasználónak (magamnak). Úgy döntöttem, hogy a hang a legkézenfekvőbb megoldás, mert ez vonja el legkevésbé a figyelmemet a vezetésről. Kerestem két WAV fájlt és erőforrásként beágyaztam a szerelvénybe, a tartalmukat pedig a Assembly.GetExecutingAssembly().GetManifestResourceStream( "SpeedwayInfo.Sounds.Ok.wav" ) metódus meghívásával kérdezem le. A stream lejátszásához nem találtam felügyelt osztályt, így kellett egy kis P/Invoke:

    [DllImport( "CoreDll.DLL", EntryPoint = "PlaySound", SetLastError = true )]
    private extern static int WCE_PlaySound( string szSound, IntPtr hMod, int flags );

    [DllImport( "CoreDll.DLL", EntryPoint = "PlaySound", SetLastError = true )]
    private extern static int WCE_PlaySoundBytes( byte[] szSound, IntPtr hMod, int flags );

Miután sikerült a streamet byte tömbbé alakítani, a lejátszás már csak egy sor:

    Sound.WCE_PlaySoundBytes( this._soundBytes, IntPtr.Zero, (int) ( Flags.SND_ASYNC | Flags.SND_MEMORY ) );

Íme néhány tanulság:

  • Mobil alkalmazás esetén a felhasználói felület kialakítása mindig kritikus. Desktop alkalmazásnál is, de itt még inkább.
  • A felhasználói felület kitalálása és megfelelő kialakítása gyakran több időt visz el, mint a kódolás.
  • Nem csak egér van a világon :)
  • A PocketOutlook névtér nagyon jól használható.
  • Compact Frameworkön is van P/Invoke, nem kell megijedni tőle.

Ha valakit érdekel, az alkalmazás letölthető, legalább Windows Mobile 5.0 és Compact Framework 3.5 kell neki.


zip SpeedwayInfo.zip (160 kB)


Balássy György (MS RD, ASP.NET MVP, MCTS)

Balássy György (MS RD, ASP.NET MVP, MCTS) Villamosmérnök, a BME Automatizálási és Alkalmazott Informatikai Tanszékén webportálok fejlesztését oktatja. 2000 óta foglalkozik a Microsoft .NET platformjával, melynek meghonosításában jelentős szerepet vállalt előadóként, konzulensként és A .NET Framework és programozása című könyv társszerzőjeként. Az MSDN Kompetencia Központon belül a Portál Technológiák Csoport vezetője, szakterülete web alapú rendszerek fejlesztése és üzemeltetése. 2004-ben Magyarországon elsőként kapta meg a Most Valuable Professional címet, majd 2005 óta a Microsoft magyarországi regionális igazgatója. Publikációi a Technet Magazinban, az MSDN Kompetencia Központ honlapján és szakmai blogjában olvashatóak.

2008.07.23. 10:53:44 | Permalink | Hozzászólások: 0 | Tárgyszavak: ,


  • Xamalot – clipart hegyek

    Balássy György (MS RD, ASP.NET MVP, MCTS) Markus Egger Xamalot webhelye 13.000 ingyenes grafikai elemet, főként clipartot kínál letöltésre. Ez eddig még nem lenne különösebben érdekes, az igazi durranás az, hogy ezen a webhelyen a képek XAML Canvas, XAML Brush, SVG Vector Format és Bitmap (PNG, JPG…) formátumban tölthetőek le. Mivel a rendszer belül natívan XAML formátumban tárol mindent, ezért a letöltésnél további paraméterek (pl. namespace, resource dictionary stb.) adhatóak meg, sőt a bitmap formátumú fájlok is röptében keletkeznek az általunk megadott formátumban és méretben. Tovább »
  • Melyik oldal jön be bejelentkezés után?

    Balássy György (MS RD, ASP.NET MVP, MCTS) Az ASP.NET Login vezérlőnek van egy DestinationPageUrl tulajdonsága, amellyel megadhatjuk annak az oldalnak a címét, ahova sikeres bejelentkezés után a vezérlő továbbdob. Ez szép is lenne, már ha működne. Tovább »


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások