Friday, May 08, 2009

image

What is this?
  • The Mobile Camp Atlanta 2009 is an (un)conference event with people interested in the Windows Mobile, Google Android, Palm Pre and Blackberry.

    On July 18th, this ad hoc event will be created organically by the participants in a BarCamp-style format. It will likely cover topics such as mobile app development, demos, game creation, strategies, technologies, techniques, mobile solutions, successes & failures and just about everything orbiting around the mobile universe.

image

 


Friday, May 08, 2009 12:00:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  |  Trackback

Facebook for your Windows Mobile 6 phone

Download Cab File

Easy to type mobile URL:

http://tinyurl.com/wmfbcab

New from Windows Mobile: a Facebook application for your phone! Download the new Facebook application for Windows Mobile and:

  • Send messages to any of the people in your Friends list.

  • Take pictures and videos on your phone, then upload them right to Facebook.

  • Send messages or call people in your Friends list.

  • Manage your profile and post anytime, anywhere.

Keep up with the latest news and posts with Facebook on your phone. Now your status updates can be up-to-the moment accounts of what you’re doing. Photos and videos are about as close to live-action as you can get. Show your friends what you’re up to, while you’re out and about.
Connecting and sharing on Facebook just got a lot livelier!

image image

image image


Thursday, May 07, 2009 11:00:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Thursday, May 07, 2009

 

Peter Nowak has published a complete library on CodePlex for creating Managed Services for Windows Mobile.

Project Description

This lightweight library contains functionality for creating Windows like Services in managed code, as creating Windows Services in Windows Mobile/Windows CE isn't supported. The library is compatible with the .NET Compact Framework 2.0 and higher.

Details

The .NET Compact Framework doesn't offer any functionality for creating Windows Services in full managed code, as like on the .NET Framework. Therefore this library enables creating Service in managed code to be like Windows Services as near as possible.
This library bases on Pavel Bánský's blog post, on how to create Services in Windows Mobile in managed code.

Features

  • Easy to use library in managed code. No P/Invoke required.

Managed Services for Windows Mobile Managed Services for Windows Mobile


Thursday, May 07, 2009 3:00:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Sunday, March 29, 2009

Here are the slide decks from my recent presentations. There were a few requests for theses so I wanted to make them available publically.

Learn how to program and sell Windows Mobile applications online. The first part of presentation will be an overview of Windows Mobile programming, focused on making developers aware of the capabilities of modern Windows Mobile devices and the latest version of the .NET Compact Framework to created advanced mobile user experiences. The second part of the presentation will be focused on different approaches to publish and distribute our creations online to the world.

Windows Mobile Marketplace

image

Creating Advanced Mobile User Experiences

image


Sunday, March 29, 2009 4:00:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Sunday, March 08, 2009

Yesterday, I did a presentation at the Roanoke Code Camp 2009. As promised here is the PowerPoint file, and follow up material.

Creating Advanced User Experiences for Windows Mobile (200)

Description:
Ready to take your mobile applications to the next level? Learn how to create exciting modern user experiences for Windows Mobile. First we'll review good, bad, and ugly of Windows Mobile user interfaces, and then we will explore different ways we can create mobile user interfaces that will thrill our users. This talk is for developers who are new to mobile development as well as programmers with some experience who want to learn new ways to make their apps shine.

PowerPoint: Creating Advanced User Experiences for Windows Mobile.pptx

Screenshots:

Screenshot 01 - Title

Screenshot 02 - Ribbon UI 

Screenshot 03 - Windows Mobile UI

We had a good turn out for the presentation, pretty much a full room. And we had a great open conversation about creating modern Windows Mobile user experiences.


Sunday, March 08, 2009 3:00:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [3]  |  Trackback
Thursday, October 02, 2008

I need to open a new email message in Pocket Outlook today. Keep in mind that’s different from just programmatically sending an email from my application.

Here’s how to programmatically send an email from your application:

   1: Microsoft.WindowsMobile.PocketOutlook.EmailMessage email = new EmailMessage();
   2: email.From = "From";
   3: email.BodyText = "BodyText";
   4: email.To = "To";
   5: email.Subject = "Subject";
   6: email.Send("AccountName");

 Here’s how to programmatically create a new mail message in Pocket Outlook and more:

[Source: Open a Specific Email Account in Pocket Outlook? - WM Experts]

  • To open inbox for MyMail:
    • tmail.exe -service MyMail
  • To additionally launch a new message with no recipient for sending:
    • tmail.exe -service MyMail -to ""
  • To have the new message pre-addressed:
  • To add a cc (copy to):
  • To add a bcc (blind copy):
  • To have the new message pre-addressed to multiple addresses:
  • To additionally add the subject line "Call Me Tonight":
    • tmail.exe -service MyMail -to nobody@nowhere.com -subject "Call Me Tonight"
  • To additionally add a message in the body:
    • tmail.exe -service MyMail -to nobody@nowhere.com -subject "Call Me Tonight" -body "at 555-1212"
  • To attach the file "Recipe.xls" in the "My Documents" folder:
    • tmail.exe -service MyMail -to nobody@nowhere.com -subject "Call Me Tonight" -body "at 555-1212" -attach "\My Documents\Recipe.xls"

Thursday, October 02, 2008 2:31:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  |  Trackback
Sunday, August 17, 2008

image_thumb204

If you have ever used Total Commander for Windows then you know how fast it is. It gives the command prompt a run for its money.

I was looking around the other day, and notice there is a version for Windows Mobile and it is FREE. Grab it here.

imageimage image

Main features:

  • Copy, Move whole subdirectories
  • In place rename, create directories
  • Delete (no recycle bin)
  • Zip and unzip
  • Properties dialog, change attributes
  • Built-in text editor
  • Search function (also for text)
  • Select/unselect groups of files
  • Select with [Sel] button
  • FTP client
  • Registry editor
  • LAN access
  • Send/Receive via Infrared (OBEX)
  • Brief, full and large icons mode
  • Single or two file window mode
  • Option to hide all files in ROM
  • Directory hot list as in Total Commander
  • Directory history through drop down list
  • Tree view
  • Configurable button bar
  • Simple help function
  • Supported languages: English, German, Catalan, Czech, Danish, Dutch, French, Hungarian, Italian, Polish, Russian, Simplified Chinese, Spanish and Swedish

Sunday, August 17, 2008 4:43:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  |  Trackback
Saturday, August 16, 2008

ceSnipURLimage_thumb204:

Features:

  • Auto places URL’s from clipboard into conversion window on application launch
  • After conversion the snipped URL is placed on the clipboard for use in your SMS/email or application of choice
  • Very simple one screen application
  • Built in checking for update via the about screen

image


Saturday, August 16, 2008 4:37:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  |  Trackback
Friday, August 15, 2008

image_thumb204MPlayer is one of the most popular Linux/Unix media player. Now, thanks to XDA-Developers forum member amitv_17, the porting to Windows Mobile has started.

image

This application pretty much plays anything, and is a great application to have install, ready and waiting.

Here’s another option:

The Core Pocket Media Player is an open-source media player for Windows CE / Windows Mobile-based devices.

image


Friday, August 15, 2008 8:32:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Thursday, August 14, 2008

image_thumb204Here’s an article that list tons of shopping Web sites that have a mobile interface.

image

Shopping Search, Via Mobile Phone

Has lots of information on these sites and more:

  • Amazon
  • eBay
  • Froogle
  • PriceGrabber
  • Yahoo! Shopping

Thursday, August 14, 2008 4:27:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Wednesday, August 13, 2008

image_thumb204Live Search Mobile is like the Swiss Army knife of Windows Mobile apps. Or maybe it is more like having your own butler ready to take care of just about anything you need. About the only thing it won’t do for you is drive your car. Who knows, maybe the next version. Open-mouthed

 Local information and navigation

  • Find local businesses and restaurants, and click to call them
  • Get turn by turn driving directions
  • Explore interactive maps with satellite imagery
  • View current traffic information and find cheap gas1 stations
  • See movie show times by theaters

image

Web search from any phone with Internet access

  • Search the full Web
  • Find the latest news items
  • Search images and photos
  • Get instant answers for weather, stocks, maps, etc

image

Easy to use, and optimized for your phone

  • Choose the customized version that’s best for your phone
  • Speak your questions—no need to type
  • Browse business listings by categories
image
Wednesday, August 13, 2008 4:18:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Tuesday, August 12, 2008

image_thumb204What a feature of many modern applications that just about everyone loves? Tabs. Visual Studio has them, Internet Explorer has them, and on and on.

What about Internet Explorer Mobile? It doesn’t have them be default but it is easy for you to add them.

Here’s how:

Install Web Viewer for Windows Mobile.

Features:

  • Tabbed Browser
  • Standard Navigation Buttons (Back, Forward, Refresh, Stop)
  • Open links in new tab
  • Duplicate tab
  • View Source (customize external viewer/editor)
  • Remember closed tabs
  • Remember typed URLs
  • Full Screen mode
  • Hide Tabs Option (to increase viewing area)
  • Various Tab Options (Close, Close Others, Reload All)

 

imageimage


Tuesday, August 12, 2008 7:58:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Monday, August 11, 2008

image_thumb204

Digg.com is probably one of the most well known and most used Web 2.0 sites on the Internet.

Check out the article on Digg.com on Wikipedia.

 

But today we live in a mobile world, is there any we can have our Digg and not be chained to our desktop?

The answer of course is YES.

Here’s a couple of easy ways to have your Digg on the runn.

image

Digg has mobile enabled Web site at http://m.digg.com/.

 

image

And there is another mobile Digg site at http://mobits.com/digg/.

 

image

See I told you Digg was popular, and dgm8 proves it.

image

And last but not least, there is Digg River.


Monday, August 11, 2008 4:04:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Sunday, August 10, 2008

image_thumb204If you haven’t been hiding under a rock for the last couple of weeks you’ve likely heard of the iPhone application: I Am Rich.

Basically, it is an iPhone application that costs $999.99. That’s right, it costs more than the iPhone itself. Heck, that’ll pay for many months of the data plan as well.

Well, for better or worse, when it comes to Windows Mobile, everyone is a developer and the app has been “ported” to both Windows Mobile (and Palm OS which just cracks me up).

image

 

Windows Mobile: I Am Rich

Palm OS: I Am Rich

iPhone: I Am Rich

 

 

 

 

 

 

Here’s a video of the original application running on someone’s iPhone:

 

Here’s some of the coverage this application has gotten:

IPhone Apps: $999.99 iPhone App "I Am Rich" Probably Only Applies to Developer

Slashdot | 8 People Buy "I Am Rich" iPhone App For $1000

Digg - Worthless, $1000 "I Am Rich" iPhone App Disappears


Sunday, August 10, 2008 4:01:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Saturday, August 09, 2008

image_thumb204Here are a bunch of applications to allow you to control your desktop from your Windows Mobile device:

 

Remote Desktop Mobile - [Download]

image

[Image Source: Remote Desktop: A Mobile Killer App - RussellBeattie.com]

image

[Image Source: Windows Mobile: Remote Desktop Client « Inspect My Gadget]

image

[Image Source: MobileViews Blog :: Windows Mobile Remote Desktop Connection]

zaDesktop - [Download]

image

[Image Source: zaDesktop freeware for Windows Mobile]

LogMeIn - [Link]

image

[Image Source: LogMeIn available for Pocket PC users]

PocketPC VNCViewer Client - [Download]

image

[Image Source: VNCViewer for PocketPC]


Saturday, August 09, 2008 6:00:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback

image_thumb204“The climate is made up of “weather”; whether it is nice out depends on whether it is raining or not. A wether is just a castrated sheep.” – Source

Windows Mobile Weather Application Reviews:

Windows Mobile Weather Applications

image

Spb Weather PAID

Spb Weather is a very powerful weather forecast Today plug-in. You can customize weather views, skins and even the weather forecast data source. Spb Pocket Plus users can save space on their Today screen running Spb Weather as a tab.

image

WeatherPanel 2.0 PAID / FREE

Version 2.3.0 has been released! New features include a more powerful layout engine, allowing for a totally customizable display, and new detail screens (summary, stats, radar, and compare).

image

Weather Watcher Mobile FREE

Weather Watcher is your personal Windows mobile weather station. Automatically retrieve the current conditions, hourly forecast, daily forecast, detailed forecast, severe weather alerts (US only) for over 77,000 cities world-wide.

image

WeatherBug Mobile Weather PAID

Plan your day with confidence – always be informed and prepared.


Saturday, August 09, 2008 1:21:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Friday, August 08, 2008

image_thumb204

image

Tweaks2K2.NET PAID

Tweaks2K2, home of Tweaks2K2 & Pocket PC devices. PC Counselor, Everything about Pocket PCs. PC Counselor, news, Pocket PCs, tips & tricks.

image

PocketTweak FREE

PocketTweak is a small program for Pocket PC to configure device settings without using any registry editors.

image 

KaiserTweak FREE

KaiserTweak is a little tool that tweaks some of your HTC Kaiser (P4450, TyTN II, Vario III) registry settings.

image

Advanced Configuration Tool FREE

Features:

  • Extensible tweak list
  • Multi-devices support
  • Multi-languages support
  • Customize key mapping
  • Customize file associations
  • Customize ClearType settings
  • Customize connection settings
  • Customize Comm Manager
  • Import provisioning XML

image

SmartTweaker Paid

Smart Tweaker 2008 is the successor of Top-Selling SmartTweaker. It now supports new Platforms and versions of Windows Mobile for Smartphone and Pocket PC devices.


Friday, August 08, 2008 11:18:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Thursday, August 07, 2008

image_thumb204

Many phones today have GPS functionality built-in. And if your phone is one of them there is tons of great GPS software available for you to take full advantage of.

If you know of any other Windows Mobile GPS software, let us know about it in the comments.

CoPilot Live (pay)

I’ve always been impressed with CoPilot. They even have an SDK.

image

 

 

 

 

 

 

 

 

 

 

Google Maps (free)

image

 

 

 

 

 

 

 

 

 

 

iGuidance (pay)

image

 

 

 

 

 

 

 

 

 

 

iGo 8 (pay)

image

 

 

 

 

 

 

 

 

 

 

Microsoft Live Search (free)

image

 

 

 

 

 

 

 

 

 

 

TomTom Navigator (pay)

image

 

 

 

 

 

 

 

 

 

 

TrackMe (free)

image

 

 

 

 

 

 

 

 

 

 

VisualGPSce (free)

image


Thursday, August 07, 2008 4:11:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [3]  |  Trackback
Wednesday, August 06, 2008
Tuesday, August 05, 2008

image_thumb204

Some things just go together:

  • Bat & Ball
  • Peanut Butter & Jelly
  • Bacon & Eggs
  • Bread & Butter
  • Table & Chair
  • Bees & Honey
  • Comb & Hair
  • Lock & Keys

What about personal computers and printers? Well, as long as you are talking desktop computers sure, everybody has a printer. And I believe that everyone who has a Windows Mobile device probably also has a printer. But do they “go together”? Probably not.

How can we bring these two together?

image

 

 

 

 

image 

http://cloudprint.hpl.hp.com/

  • What is CloudPrint?

CloudPrint is a new service that allows you to share, store and print documents easily using your mobile telephone.

  • Does it cost anything?

It is absolutely free to use the CloudPrint service. How you get charged for SMS messages is between you and your mobile phone carrier.

  • How do I print Web pages from my phone with SMS?

To print a Web page from your mobile phone, you can SMS the URL to +44 77814 88791. The URL should be in the body of the message. Recipients will receive a document code, just like if the Web page was printed from the PC virtual print driver.

  • CloudPrint by Email!

Now you can email items to CloudPrint in addition to using the virtual printer driver. Just send emails with attachments to telephone_number@cloudprint.net. CloudPrint currently supports JPEG and PDF's, with more file formats supported soon. [ details ]

  • Remote Print Monitor

Print to your own printer with the Remote Print Monitor. [ details ]


Tuesday, August 05, 2008 4:55:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Monday, August 04, 2008

image_thumb204

Today many people have good data plans for their Windows Mobile 6 devices. And many of those people are in situations where they would like to either share this connection with either other devices or other people.

So our phones are almost always with us, and we have lots of unlimited data plans available to us. But we want more. We want to be able to share this opportunity.

The question is how?

image

 

 

Here’s a great write up from LifeHacker.com:

Turn your Windows Mobile phone into a Wi-Fi router, providing any Wi-Fi-capable device access to your cell plan's data network, with freeware application WMWifiRouter. Install WMWifiRouter to your phone, run the application, and it automatically sets up an ad-hoc Wi-Fi network named WMWifiRouter that you can connect your laptop—or any other wireless device—to without going through the regular pain involved in tethering an Internet connection to your mobile device. This application is for Windows Mobile 6 only.

Please note that WMWiFiRouter is now a commercial application available for 19.99. This is an updated and fully supported version.

But you can still download the earlier freeware version from the following location:

FreewarePocketPC.net: WMWifiRouter v0.89


Monday, August 04, 2008 4:15:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Sunday, August 03, 2008

image_thumb204

You can’t have a pimped out ride with the factory sound system, and you can’t have a pimped out phone with the default themes.

Here are some of the best skins I know of. If you know of any others please share.

 

image

Name: Microsoft Voice Command Windows Mobile Media Player Skin

Description:

OrangeGlass VGA is a cool, new skin designed for VGA Pocket PCs. If you are tired of skins that mimic everything else under the sun, have a go of this. It is completely original, created from scratch with a close attention to detail and perfection.

Commercial $39.99

Note: You get this skin with Microsoft Voice Command. You can’t buy it separate.

 

 

 

image

Name: Vista Windows Mobile Media Player Skin

Description:

Glassy looking Vista windows media player skin with accessible interface and big buttons for finger control.

FREE

 

 

 

 

 

image

Name: Windows Medial Player 11 Window Mobile Media Player Skin

Description:

The Windows Media player skin free for Windows Mobile Standard.

FREE

 

 

 

 

 

image

Name: Tweak Windows Mobile Media Player Skin

Description:

Introducing Tweak, the new skin from Twisted Pixels Multimedia that includes buttons with real life-like motion.

Commercial $1.99

 

 

 

 

 

image

Name: OrangeGlass Windows Mobile Media Player Skin

Description:

OrangeGlass VGA is a cool, new skin designed for VGA Pocket PCs. If you are tired of skins that mimic everything else under the sun, have a go of this. It is completely original, created from scratch with a close attention to detail and perfection.

Commercial $1.99


Sunday, August 03, 2008 4:43:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  |  Trackback
Saturday, August 02, 2008

image_thumb20What would you be able to do with a browser that doesn’t suck? Just imagine all the possibilities.

 

Ok so what are our options for a Windows Mobile Browser that doesn’t suck?

Opera Mobile 9.5 is probably my favorite.

image
image
image
image
image
image
Deepfish may be a viable alternative to Opera, but Microsoft hasn't accepted new testers into their pool for many months, and hasn't updated their team blog since March 2007.

Saturday, August 02, 2008 5:30:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [3]  |  Trackback
Friday, August 01, 2008

imageIf you have a Windows Mobile device that can be upgraded to the newest version of Windows Mobile 6.1, then do so immediately.

Here are some phones that already support Windows Mobile 6.1, or will do so soon.

image

image

image

AT&T Tilt

HTC Mogul

HTC Touch

image

image

image

Motorola Q9c

Samsung Ace

Samsung Blackjack II

 

It’s the best version of Windows Mobile yet, and it has a lot of great new features to offer.

  • Instant messaging-like texting
  • Improved Internet browsing
  • Simpler e-mail and Bluetooth setup
  • New Home screen interface
  • New Getting Started Center
  • Security enhancements
  • Easier Wi-Fi connection
  • More personal choice

Plus it looks great too!

 

Newest version of Windows Mobile aka “The New Hotness”

image image

Windows Mobile 6.1 Professional

Windows Mobile 6.1 Standard

 

We’ve come a LONG way since the first versions of Windows Mobile. Take a look below and see for yourself.

 

Previous versions of Windows Mobile aka “Old and Busted”:

image

image

Pocket PC 2000

Pocket PC 2002

image

image

Pocket PC 2003

Pocket PC 2003 Second Edition

image

image

Windows Mobile 5

Windows Mobile 6


Friday, August 01, 2008 4:53:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [4]  |  Trackback

imageBy now you probably have seen the show Pimp My Ride from MTV. Each show consisted of taking one car in poor condition and restoring it, as well as customizing it. The same way this made a great car show for TV, I think it will make a great Windows Mobile series for my blog.

I’ll be sharing some of my best tips and tricks, and hopefully you will be too!

Check back every day for information on how to take your Windows Mobile phone from “Old and Busted” to becoming “The New Hotness”.

 

image

image

BEFORE: Old and Busted

AFTER: The New Hotness

image

image


Friday, August 01, 2008 4:30:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  |  Trackback
Monday, June 30, 2008

image And there you have it: 30 .NET Windows Mobile Applications in 30 Days!

I really liked yesterday’s application, Community Megaphone Reader. I think it was because it was a Windows Mobile mashup application. And we can look forward to many more of these types of applications to come our way.

 

image

Trippr

You’ve probably already figured out what this application does. That’s right it takes your current GPS position and pulls back pictures that are geotagged for the area you are in. So while you are riding down the road you can flickrscan for photos taken near you, possibly as close as the block you are on.

Really cool idea I think. I’ll probably hook this up to the dashboard of my car and just let it run while I drive around. It should be lots of fun to just see what I see.

The UI is basic sterile white, but I wanted the photos to be the star of the show so I went with the one uber true neutral color.

Control are very simple: Update, Menu, GPS, GPS Start, GPS Stop, About, and Exit. Update is the main feature. Any time it is pressed new photos are downloaded.

Again for this project we looked to the GPS Intermediate Driver Reference, it has served us well these 30 days and I really highly recommend it. If you need to do a Windows Mobile GPS application use this and you are almost done.

Another great API I found is the Flickr.Net API. If you need to connect to Flickr in .NET or .NET Compact Framework this is great. It does all the heavy lifting for you! I was up and running in minutes!

“The Flickr.Net API is a .Net Library for accessing the Flickr API. Written entirely in C# it can be accessed from with any .Net language in .Net Framework 1.1, .Net Framework 2.0, .Net Compact Framework 2.0 and Mono.”

Update Method

   1: if (gpsPosition == null || !gpsPosition.LatitudeValid || !gpsPosition.LongitudeValid)
   2:      return;
   3:  
   4:  double minimumLongitude = gpsPosition.Longitude - 1;
   5:  double minimumLatitude = gpsPosition.Latitude - 1;
   6:  double maximumLongitude = gpsPosition.Longitude + 1;
   7:  double maximumLatitude = gpsPosition.Latitude + 1;
   8:  
   9:  string apikey = "get_your_own_flickr_key";
  10:  Flickr flickr = new Flickr(apikey);
  11:  
  12:  PhotoSearchOptions options = new PhotoSearchOptions();
  13:  options.BoundaryBox = new BoundaryBox(minimumLongitude, minimumLatitude, maximumLongitude, maximumLatitude);
  14:  options.Extras |= PhotoSearchExtras.Geo;
  15:  options.PerPage = 10;
  16:  options.SortOrder = PhotoSearchSortOrder.InterestingnessAsc;
  17:  
  18:  Photos photos = flickr.PhotosSearch(options); 
  19:  StringBuilder stringBuilder = new StringBuilder();
  20:  
  21:  foreach(Photo photo in photos.PhotoCollection)
  22:      stringBuilder.AppendFormat(@"<img src=""{0}"" style=""border: 1px black solid; padding: 0px; margin: 1px"" />", photo.ThumbnailUrl);
  23:  
  24:  webBrowser.DocumentText = stringBuilder.ToString();

Possibilities:

Obviously this needs an auto-update feature and settings for those of use who will use it on the road. If I click on a picture I’d love to see a larger view of it as well. and a details listing telling me more about the photo would be great.

Download executable: trippr.cab

Download Source Code: trippr.zip

Thank You:

I appreciate everyone’s encouragement and feedback. This project would not have been a success without all of you. Keep an out there’s more to come in the future. Wink


Monday, June 30, 2008 10:24:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback

imageWe only have one more day left in our 30 days of .NET [Windows Mobile Applications]. Where do we go from here?

I’m really happy with the 30 Days of .NET so I do think I will continue that in one format or another for some time. It’s been a blast. And everyone knows my passion for Windows Mobile programming so we keep finding way to work that in there as well.

I haven’t quite decided what I’ll do for next month but I’m sure it’ll only get better as we move forward.

There have been a lot of request for applications that haven’t made it on deck yet, and obviously they aren’t all going to get done tomorrow. But I think I’ll be able to throw in some Bonus Day of .NET or Return of Day of .NET and knock some of them out over time.

My goal is to take all the existing content and clean it up some and make more through and detailed learning materials to really help beginners take off with Windows Mobile.

Hope you’ll join me on the road ahead…


Monday, June 30, 2008 1:10:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  |  Trackback

Wow, it’s hard to believe the month is almost over already. So far we have 29 applications done in 29 days! Thank you for all your encouragement.

If you missed the week one recap here it is: 30 Days of .NET [Windows Mobile Applications] - Week One.

If you missed the week two recap here it is: 30 Days of .NET [Windows Mobile Applications] - Week Two.

If you missed the week three recap here it is: 30 Days of .NET [Windows Mobile Applications] - Week Three.

What’s your favorite?

image image  image image
GPS Clock MobileInfo Mobile Flashlight SmartDial

Let see we have a time utility, and device information, call blocker, and lots more!

image image image image_thumb15[4]
GeoCash Repeatr CallBlocker What will be next?

Feedback:

Got an idea? Got some feedback? Share it? Thanks!


Monday, June 30, 2008 12:06:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  |  Trackback

Only One Day Left…

Not too long ago Page Brooks and myself made the three and a half hour drive from Florence, SC to Greensboro, NC to attend the Ineta Carolina Community Leadership Summit '08. This was a great event and there we meet a lot of the local Ineta user group leaders. We also meet Andrew Duthie, aka DEvHammer. One issue that rose to the top of things we wanted to work on improving at the leadership summit was awareness of events that are occurring in the local regional area. That’s when Andrew told everyone about the project he has been working on: Community Megaphone.

I love have information at my fingertips, so I decided to write a tie-in application:

image

image

Community Megaphone Reader

Basically, this application connects to the Community Megaphone RSS feed and pulls down event data. Then it takes your current GPS position and calculates your distance from each event. Finally, it takes all the events and sorts then so you can find the event that is the closest to you. This is a great application for the traveling .NET geek. Where ever you are you can find great .NET events to attend.

The UI is paying homage to Andrew’s Community Megaphone site. I tried to match the basic colors to keep it familiar. The hyperlinks are active and will take you the event’s page on Community Megaphone. The menu only has a few options: Refresh, About, and Exit.

An application like this is really exciting, because it is tying the world of mobile together with the world wide web.

These types of mashup applications will contitue to take of for years.

LoadRss Method

   1: public static DataSet LoadRss(string requestUriString)
   2: {
   3:     HttpWebRequest feed = HttpWebRequest.Create(requestUriString) as HttpWebRequest;
   4:     StreamReader streamReader = new StreamReader(feed.GetResponse().GetResponseStream());
   5:  
   6:     string rssXml = streamReader.ReadToEnd();
   7:     rssXml = rssXml.Replace(@"<?xml version=""1.0"" encoding=""utf-8""?>", string.Empty);
   8:  
   9:     StringReader stringReader = new StringReader(rssXml);
  10:  
  11:     DataSet dataSet = new DataSet();
  12:     dataSet.ReadXml(stringReader);
  13:  
  14:     return dataSet;
  15: }

 

GetEvents Method

   1: public static List<Item> GetEvents(DataSet dataSet, GpsPosition gpsPosition)
   2: {
   3:     List<Item> items = new List<Item>();
   4:  
   5:     foreach (DataRow dataRow in dataSet.Tables["item"].Rows)
   6:     {
   7:         Item item = new Item();
   8:         item.Title = (string)dataRow["title"];
   9:         item.Description = (string)dataRow["description"];
  10:         item.Link = (string)dataRow["link"];
  11:         item.PublishDate = DateTime.Parse((string)dataRow["pubDate"]);
  12:         item.Latitude = Double.Parse((string)dataRow["lat"]);
  13:         item.Longitude = Double.Parse((string)dataRow["long"]);
  14:  
  15:         if(gpsPosition.LatitudeValid && gpsPosition.LongitudeValid)
  16:             item.Distance = GeoCodeCalc.CalcDistance(gpsPosition.Latitude, gpsPosition.Longitude, item.Latitude, item.Longitude);
  17:  
  18:         items.Add(item);
  19:     }
  20:  
  21:     items.Sort(delegate(Item item1, Item item2)
  22:     {
  23:         return item1.Distance.CompareTo(item2.Distance);
  24:     });
  25:  
  26:     return items;
  27: }

Display Events Method

   1: public static string DisplayEvents(List<Item> events)
   2: {
   3:     StringBuilder stringBuilder = new StringBuilder();
   4:  
   5:     foreach (Item item in events)
   6:     {
   7:         stringBuilder.Append(@"<span style=""color: #FFFFFF;font-weight:bold;"">");
   8:         stringBuilder.AppendFormat(@"<a href=""{0}"" style=""color: #DBB94F;"">{1}</a><br/><br/>", item.Link, item.Title);
   9:         stringBuilder.AppendFormat(@"{0}<br/><br/>", item.Description);
  10:         stringBuilder.AppendFormat(@"<b>Distance: <span style=""color: #DBB94F;"">{0} miles</span></b><br/>", item.Distance.ToString("0.00"));
  11:         // stringBuilder.AppendFormat(@"<b>{0}</b><br/>", item.PublishDate);
  12:         // stringBuilder.AppendFormat(@"{0}<br/>", item.Latitude);
  13:         // stringBuilder.AppendFormat(@"{0}<br/>", item.Longitude);
  14:         stringBuilder.AppendFormat(@"<br/><br/>");
  15:         stringBuilder.Append(@"</span>");
  16:     }
  17:  
  18:     return stringBuilder.ToString();
  19: }

Possibilities:

Andrew recently added iCalendar file support to Community Megaphone. This would be a great feature to add to a Windows Mobile application, and it is totally doable. The HTML could be a little more fancy maybe even use a few 16x16 fonts for a little personality.

Download executable: communityMegaphoneReader.cab

Download Source Code: communityMegaphoneReader.zip

Feedback:

Want more? What else would you like to see? Time’s running out only one more day. Be sure to get your ideas in soon!


Sunday, June 29, 2008 11:31:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Saturday, June 28, 2008

Only 2 Days Left…

Today’s application is CallBlock. It is designed to watch incoming calls, and check and see if they match any on the block phone numbers list. If they do match then the phone is “blocked”.

 

image

CallBlock

The first thing you should notice is the flashy logo at the top of the form. I create this logo with an online 3D logo generator. The one simple touch adds a lot of professional polish to the application. I really like red and white so I didn’t change the background color this time. But I am starting to wish I had. It seems a little “blah” to me now.

Next we have our phone number input text box. The user enters the phone number here, and presses the Block menu item to add it to the block number list below. On the main menu we also have options to Unblock, and Unblock All. And we have our almost universal About and Exit menu items.

There are two main pieces to this application. One part is the State and Notification Broker code to give us an event to catch incoming phone calls.

I actually got myself painted into a corner, I assumed you could just programmatically ignore of phone call but it isn’t that simple. Fortunately, a good friend of mine, Lou Vega, came up with a very slick workaround for this. And that is the second part which is the keybd_event method that allows us to send keypresses to the OS to Ignore the phone call.

CallBlock Core Code

   1: const int KEYEVENTF_KEYDOWN = 0x0;
   2: const int KEYEVENTF_KEYUP = 0x2;
   3:  
   4: [DllImport("coredll.dll", EntryPoint = "keybd_event", SetLastError = true)]
   5: internal static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
   6:  
   7: SystemState phoneIncomingCall = new SystemState(SystemProperty.PhoneIncomingCall);
   8: private void frmMain_Load(object sender, EventArgs e)
   9: {
  10:     phoneIncomingCall.Changed += new ChangeEventHandler(phoneIncomingCall_Changed);
  11: }
  12:  
  13: void phoneIncomingCall_Changed(object sender, ChangeEventArgs args)
  14: {
  15:     string phoneNumber = RemoveText(SystemState.PhoneIncomingCallerNumber);
  16:  
  17:     if(listBoxBlockedNumbers.Items.Contains(phoneNumber))
  18:     {
  19:         keybd_event(115, 0, KEYEVENTF_KEYDOWN, 0);
  20:         keybd_event(115, 0, KEYEVENTF_KEYUP, 0);
  21:     }
  22: }

 

Possibilities:

It would be easy to add support for blocking SMS text messages as well. We’ve done all the code for this already in previous applications. Also the application could really use a persistent data store to remember number to block in case the user closes the application. It would be nice to allow user formatting of entered phone numbers for increased readability.

Download executable: callBlock.cab

Download Source Code: callBlock.zip

Feedback:

Want more? What else would you like to see? Time’s running out on submitting ideas. Be sure to get yours in soon!


Saturday, June 28, 2008 4:07:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  |  Trackback

So Page Brooks was talking with me earlier this week and he had a great idea for another Windows Mobile application. He wants an application that will repeat alerts for missed phones and text messages. I have to admit this is something I could use myself. So I figured I take a crack at it today, since it would make for a fun, simple, Friday app.

 

image

Repeatr

I decided to change up the naming format and play of the popular Web 2.0 naming conventions giving us the name: Repeatr. I have to admit, it is kind of catchy.

I searched for “Web 2.0 Logo Creator” and pretty much went with the first one I saw. This gave me a pretty slick logo in less than 5 minutes. I also decided to make the background a “tooltip” yellow, which I think looks really good.

Other than that everything is rather straight forward. We have checkboxes allowing the user to choose what events we will monitor. And we have a menu with a couple options, namely About and Exit. There is a “Clear Alerts” menu item, as well, that allows users to acknowledge they have responded to the alert(s).

The application allows user to select the number of minutes between alerts up to 60 minutes.

Of course we are using the State and Notification Broker to make all this happen. Using it means we hardly have to write any code ourselves!

State and Notification Broker setup code

   1: SystemState phoneMissedCalls = new SystemState(SystemProperty.PhoneMissedCalls);
   2: SystemState messagingSmsUnread = new SystemState(SystemProperty.MessagingSmsUnread);
   3: SystemState messagingTotalEmailUnread = new SystemState(SystemProperty.MessagingTotalEmailUnread);
   4: SystemState messagingVoiceMailTotalUnread = new SystemState(SystemProperty.MessagingVoiceMailTotalUnread);
   5:  
   6: private void frmMain_Load(object sender, EventArgs e)
   7: {
   8:     phoneMissedCalls.Changed += new ChangeEventHandler(phoneMissedCalls_Changed);
   9:     messagingSmsUnread.Changed += new ChangeEventHandler(messagingSmsUnread_Changed);
  10:     messagingTotalEmailUnread.Changed += new ChangeEventHandler(messagingTotalEmailUnread_Changed);
  11:     messagingVoiceMailTotalUnread.Changed += new ChangeEventHandler(messagingVoiceMailTotalUnread_Changed);
  12: }

 

The way we alert a user to having missed a monitored event is by playing a sounds which is easy to do.

   1: [DllImport("aygshell.dll")]
   2: static extern uint SndPlaySync(string pszSoundFile, uint dwFlags);
   3:  
   4: void PlaySound()
   5: {
   6:     string path;
   7:     path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
   8:  
   9:     SndPlaySync(Path.Combine(path, "alert.wma"), 0);
  10: }

Other than a little plumbing to make everything work together that is basically the entire app in a nutshell.

Possibilities:

This is a pretty spiffy application. But software can always be better. An option to allow the phone to vibrate would be great. Another option to allow the user to select the alert sound would be nice too.

Download executable: repeatr.cab

Download Source Code: repeatr.zip

Feedback:

Want more? What else would you like to see? Time’s running out on submitting ideas. Be sure to get yours in soon!


Saturday, June 28, 2008 2:30:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Friday, June 27, 2008

4 Days left…

Today on twitter, Glen Gordon was telling me that Brendon Schwartz had an idea for today’s application:

glengordon @cjcraft here's an idea for a mobile app that @brendonschwartz will like - record $ spent during the day and where it was spent (with GPS) about 13 hours ago from Witty in reply to CJCraft

It’s a really good idea. Probably a better idea than we will be able to do it tonight, but we are all about taking the first small steps to accomplishing great things.

 

image

GeoCash

I love the name, it is a play on GeoCaching. Somehow it adds a lot of “buzz” to the application already.

The application is designed to be easy for the user to use and understand. The user only needs to enter the amount they spent along with a note, and then simply press log and it will be added to the GeoCash log.

We are using our own NumericTextBox to be sure the user doesn’t enter in any invalid amounts spent. We have another standard TextBox for the note input. Below this we have the log information. This is done using a WebBrowser control, and setting its DocumentText property.

The main reason to use the WebBrowser control is to be able to do a little better text formatting. This allowed us to easily markup our text in bold and color.

 

HTML formatted output:

   1: sb.AppendFormat(@"<b>Date:</b> {0}", DateTime.Now).Append("<br/>");
   2: sb.AppendFormat(@"<b>Amount:</b> <span style=""color:red"">{0:c}</span>", decimal.Parse(textBoxAmountSpent.Text)).Append("<br/>");
   3: sb.AppendFormat(@"<b>Note:</b> {0}", textBoxNote.Text).Append("<br/>");
   4: sb.AppendFormat(@"<b>Latitude:</b> {0}", position.Latitude).Append("<br/>");
   5: sb.AppendFormat(@"<b>Longitude:</b> {0}", position.Longitude).Append("<br/>");
   6: sb.Append("<br/>");
   7:  
   8: documentText += sb.ToString();
   9: webBrowser.DocumentText = documentText;

 

Possibilities:

I love this app. It has so many cool possibilities. You could easily save this information to a text file or sent it as an email. I think this is perfect data to do a mashup on for example create a heatmap etc for it so you can see the “dangerous” side of town you need to avoid taking your money into from now on. Open-mouthed

Download executable: geoCash.cab

Download Source Code: geoCash.zip

Feedback:

Want more? What else would you like to see? Time’s running out on submitting ideas. Be sure to get yours in soon!


Friday, June 27, 2008 1:59:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  |  Trackback
Thursday, June 26, 2008

5 Days Left…

So when you are talking Windows Mobile Applications you are usually talking about a cell phone device. We have looked at text messages using SMS, but one thing we haven’t look at so far is programmatically making phone calls. Today we will take a look at creating our own phone dialer application. It’s easier than you think!

 

image

SmartDial

I think the UI is pretty nice, not the best, but good overall. It is bright and clean. I found a web site that allowed me to create buttons in a snap and used it for the numbers. At the top of the screen, I added a label to display the number to dial. The menu only has a few options: Dial, Menu, Clear, About, and Exit.

Since we only allow users to enter numbers using our custom buttons, we don’t have to worry about anyone entering invalid characters.

So how much code did we as Windows Mobile application developers have to write to actually dial a number? See for yourself.

   1: private void Dial()
   2: {
   3:     new Phone().Talk(labelPhoneNumber.Text);
   4: }

Possibilities:

I think this has the potential to be an absolutely great application. One thing I think would be cool is if the application supported skinning. In a way it does, since I decided to leave the image resources as external files to the executable. So a user could edit any of the files themselves. Another great enhancement would be to have mousedown images for each button to give a nice “animated” touch to the application. What about quick soft sounds for when each button is pressed?

Download executable: smartDial.cab

Download Source Code: smartDial.zip

Feedback:

Want more? What else would you like to see? Time’s running out on submitting ideas. Be sure to get yours in soon!


Wednesday, June 25, 2008 11:12:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  |  Trackback
Tuesday, June 24, 2008

Today I am in Atlanta, GA with Brian Hitney and Glen Gordon. We are presenting Mobility Roadshow: Programming for Windows Mobile. We had a long drive last night, and will have another long drive back to Florence, SC tonight. So I choose not bite off anything too intense today.

Many people today carry mini-flashlights on the end of their key chain. Apparently there is a need for this type of device because many stores sell them near the cash registers in the checkout lines. I wonder why these mini-flashlights are so popular when almost everyone has a mobile phone today. Maybe it is because the phone’s back light is not bright enough.

Hmm, this got me thinking. Most Windows Mobile devices have large powerful screens, maybe there is a way we could reuse our device as both a mobile phone and a mini-flashlight.

image

imageMobile Flashlight

The UI is simple but the task is simple. I considered using a watermark image for the background or add a gradient to the background. With a goal of having as much of the screen as bright as possible I think the simple solid color background was the choice to make.

We only have a few menu options: Burn, Menu, Settings, About, and Exit. I decided to use the term “Burn” like you see on road sign saying “Motorcycles must burn lights”. We only have a few screens: Main, Settings, About. The settings screen you should see to the left, and the main screen should be to the right of this text.

On the about screen we let the user choose the color they would like the screen to “burn” at. By default we have chosen white to maximize brightness.

We used NumericUpDown controls to maximize usability, this allows user to choose the soft input panel or the control directly to set the color amounts.

Save Color Values

   1: int red = (int) numericUpDownRed.Value;
   2: int green = (int) numericUpDownGreen.Value;
   3: int blue = (int) numericUpDownBlue.Value;

 

Get Color Values

   1: numericUpDownRed.Value = (int) Global.Color.R;
   2: numericUpDownGreen.Value = (int) Global.Color.G;
   3: numericUpDownBlue.Value = (int) Global.Color.B;

Possibilities:

The biggest need this application has is a way for the user to save their color preference. Right now if the application is closed the color will go back to the default color of white. Another great feature would be to make the application to go full screen and hide both the title bar and the menu. One last addition would be code to maximize the screen brightness setting in Control Panel.

Download executable: mobileFlashlight.cab

Download Source Code: mobileFlashlight.zip

Feedback:

Want more? What else would you like to see? Time’s running out on submitting ideas. Be sure to get yours in soon!


Tuesday, June 24, 2008 2:46:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback

Information is power. And with the .NET Compact Framework we can have all the information we want. Windows Mobile has many ways to get details about the device our application is running on. Hands down my favorite is the State and Notification Broker. In a word it ROCKS! You can use it to find out any number of things and you can use it to notify us when information we care about change state.

There are pieces of information that are so important in their own right, they could be used to create an application just to monitor and read that one detail. The first one that comes to mind is battery state.

image

MobileInfo

I thought of a few ways I could make this application flashy, but decided that might get in the way of the facts. Sometimes a simple notepad like application is the most beautiful application. Form and function were meant to be together, but sometimes forms steals the show, and function is what everyone came to see.

So instead we have a WebBrowser control with a simple text listing of the device’s most important details. I decided to use a WebBrowser control in case I ever did want to use more advanced text format.

We stick to our guns about keeping control simple and intuitive. We have a great menu with only a few options: Refresh, About, and Exit.

RefreshData Method

   1: private void RefreshData()
   2: {
   3:     StringBuilder sb = new StringBuilder();
   4:  
   5:     sb.Append("<b>Active Application:</b>").Append("<br/>");
   6:     sb.AppendFormat("'{0}'", SystemState.ActiveApplication).Append("<br/>").Append("<br/>").Append("<br/>");
   7:  
   8:     ...
   9: }

Possibilities:

You can never have too much of a good thing. We have twenty pieces of information here for users to enjoy. How about a hundred? Or how about a quick and easy search bar? And the UI needs to be simple but it could be better.

Download executable: mobileInfo.cab

Download Source Code: mobileInfo.zip

Feedback:

Want more? What else would you like to see? Time’s running out on submitting ideas. Be sure to get yours in soon!


Tuesday, June 24, 2008 2:11:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Monday, June 23, 2008

I have put together a calendar of applications for the 30 Days of .NET [Windows Mobile Applications]. Here you can get a quick feel for all the applications we’ve created so far, and will write in the coming days.

30 Days of .NET Windows Mobile Applications

  image_thumb[37] image_thumb[38] image_thumb[39] image_thumb[40] image_thumb[41] image_thumb[42] image_thumb[43]
image[141] image[134] image[135] image[136] image[137] image[138] image[139] image[140]
image[150] image[142] image[143] image[144] image[145] image[146] image[147] image[149]
image[151] image[152] image[153] image[154] image[155] image[156] image[157] image[158]
image[166] image[159] image[160] image[161] image[162] image[163] image[164] image[165]
image[167] image[168] image[169]          

 

Day 1 Minutes to Midnight Countdown
   Countdown timer until midnight.
Day 2 Bluetooth Manager
   Utility to programmatically control Bluetooth status.
Day 3 GPS Compass
   GPS tools to read device’s heading from device GPS.
Day 4 Mileage Tracker
   Application that will track vehicles mileage statistics.
Day 5 Mobile Capture
   Screenshot utility that will programmatically take screenshots on device.
Day 6 Pocket PasswordGen
   Program generates secure random passwords.
Day 7 Mobile FX
   Fun application that allows user to play various “situation” sounds.
Day 8 Rotate Me
   Utility to programmatically control the device’s orientation.
Day 9

Mobile Tipper

   Allows users to calculate tips quickly and easily.
Day 10 What is My IP?
   Find out the IP addresses a device has in a snap.
Day 11 Mobile Signature
   Program that will capture signature from people in the field.
Day 12 Mobile Quiz
   Application that is designed to display created quizzes and polls to users.
Day 13 Pocket Death Calculator
   Fun program that will calculate how long until a user has left to live.
Day 14 Mobile SMS Contact
   Utility to allow sending of SMS text messages to groups.
Day 15 Mobile SMS Remote
   SMS framework and application for sending SMS commands to devices.
Day 16 SMS Logger
   Record and log all SMS text messages received by device.
Day 17 Lunch-O-Matic
  Take the chore out of deciding where to eat lunch today.
Day 18 Mobile Weather
   What will the weather be like today?
Day 19 Mobile Speedometer
   GPS utility that will obtain current speed from the device’s GPS.
Day 20 Mobile Altimeter
   GPS utility that will read the current altitude from GPS.
Day 21 Mobile Sketcher
   Simple but powerful drawing application for Windows Mobile.
Day 22 GPS Clock
  GPS application that can update the device’s time from GPS information.
Day 23 MobileInfo
  Program that will read and display device related information
Day 24 Mobile Flashlight
  In the dark? Mobile Flashlight is here to help.
Day 25

SmartDial

  Want to create your phone dialing interface? Start with SmartDial.
Day 26 GeoCash
  This application will log and track where you spend all your money.
Day 27 Repeatr
   Miss a phone call, text message, or email. This application will remind you.
Day 28 CallBlocker
   Tired of that annoying automated marketing call? Let CallBlocker block it.
Day 29 Community Megaphone Reader
   Wondering where the closest developer event is to you? CMR can tell you.
Day 30 Trippr
   Let Tripper find geotagged photos from your location on Flickr.

Monday, June 23, 2008 12:25:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Sunday, June 22, 2008

Yeah, we have made it through week three of my 30 Days of .NET challenge. So far, we have 22 applications for 22 days. Thanks for your support!

If you missed the week one recap here it is: 30 Days of .NET [Windows Mobile Applications] - Week One.

If you missed the week two recap here it is: 30 Days of .NET [Windows Mobile Applications] - Week Two.

What’s your favorite?

image image image image
Mobile SMS Remote SMS Logger Lunch-O-Matic Mobile Weather

We get around, don’t we? SMS, RSS, GPS, Camera API, and more!

image image image image
Mobile Speedometer Mobile Altimeter Mobile Sketcher What will be next?

Feedback:

Got an idea? Got some feedback? Share it? Thanks!


Sunday, June 22, 2008 6:31:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  |  Trackback

I couldn’t resist creating another GPS related mobile application. One of the neat pieces of data you get from your GPS device is time. This is great. It is like having one of the clocks that can update itself over the air by reading data transmitted from various atomic clocks throughout the world. Many phones today have the ability to update their time by connecting to the OEM’s time servers, but not all. And there are still lots of Windows Mobile classic devices in the world that do not have cellular capabilities.

Vista has the ability to update its time by using a feature called Internet Time. Basically Vista connects to time.windows.com and reads a Network Time Protocol server.

 

image

GPS Clock

Our user interface is simple and direct. We are using a nice graphic to adds some visual zing to the application. At the top of the screen we show the user their current device time and their current GPS time.

This allows the user to tell at a glance if they need to update their device’s time using the Update menu option.

On the menu we have added some simple settings features: GPS Start, GPS Stop, About, and Exit.

This is one of those Web 2.0 ideas where an application does one thing but does it very well. Sometimes these are the best apps. In this case, our application provides a bride for GPS time data to become device time data.

Somtimes that’s all it takes to make a user happy.

UpdateData Method:

   1: void UpdateData(object sender, System.EventArgs args)
   2: {
   3:     if (gps.Opened)
   4:     {
   5:         if (position != null)
   6:         {
   7:             if (position.TimeValid)
   8:             {
   9:                 gpsTime = position.Time;
  10:  
  11:                 labelCurrentGpsDate.Text = gpsTime.ToLongDateString();
  12:                 labelCurrentGpsTime.Text = gpsTime.ToLongTimeString();
  13:             }
  14:         }
  15:     }
  16: }

 

UpdateTime Method:

   1: private struct SYSTEMTIME
   2: {
   3:     public short Year;
   4:     public short Month;
   5:     public short DayOfWeek;
   6:     public short Day;
   7:     public short Hour;
   8:     public short Minute;
   9:     public short Second;
  10:     public short Milliseconds;
  11: }
  12:  
  13: [DllImport("coredll.dll")]
  14: private static extern bool SetSystemTime(ref SYSTEMTIME time);
  15:  
  16: private void UpdateTime()
  17: {
  18:     DateTime idag = gpsTime.ToUniversalTime();
  19:  
  20:     SYSTEMTIME s = new SYSTEMTIME();
  21:     s.Year = (short) idag.Year;
  22:     s.Month = (short) idag.Month;
  23:     s.DayOfWeek = (short) idag.DayOfWeek;
  24:     s.Day = (short) idag.Day;
  25:     s.Hour = (short) idag.Hour;
  26:     s.Minute = (short) idag.Minute;
  27:     s.Second = (short) idag.Second;
  28:     s.Milliseconds = (short) idag.Millisecond;
  29:  
  30:     SetSystemTime(ref s);
  31: }

Possibilities:

How about changing the color of the date and time if they are more than five minutes off? Simple feature to add but really helps the user. And that’s what matters.

Download executable: gpsClock.cab

Download Source Code: gpsClock.zip

Feedback:

Want more? What else would you like to see? Time’s running out on submitting ideas. Be sure to get yours in soon!


Sunday, June 22, 2008 6:16:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback

The main goal of 30 Days of .NET was to create a series of applications, any of which, a reader could take and use as a springboard to creating their first application. Well that, and to have some fun along the way and get more people excited about mobile development. A secondary goal of mine has been to show off various capabilities of mobile devices like GPS, Bluetooth, and multimedia features. One feature we haven’t covered so far is using a built-in camera.

Today we will mark that item off our list…

image

Mobile Sketcher

The goal is to create a basic drawing application, but add a mobile twist to it. On the menu, I have added a menu item for selecting a picture using the select picture dialog. The nice thing about the select picture dialog is it allows you to use your camera to take a picture and then select it as your picture.

In a way this application is a lot like the mobile signature capture application we did a while back, but there are some important differences: picture selection support, camera support, save file dialog support, and more. The business case for this application is something like the following: an insurance agent arrives on the scene of an automotive accident, she takes a picture using Mobile Sketcher and then adds notes and sketches to the picture for claims processing.

So users can select a picture from their device or take a picture and use it for their background. And then they can draw and edit the picture using Mobile Sketcher. At the bottom of the screen we allow user to select different colors for the pen’s ink: red, orange, yellow, green, blue, brown, white, and black. Well okay, white is really a light gray since white on white is hard to see.

SelectPicture Method:

   1: private void SelectPicture()
   2: {
   3:     SelectPictureDialog selectPictureDialog = new SelectPictureDialog();
   4:     DialogResult dialogResult = selectPictureDialog.ShowDialog();
   5:  
   6:     if (dialogResult != DialogResult.OK)
   7:         return;
   8:  
   9:     pictureBox.Image = new Bitmap(selectPictureDialog.FileName);
  10: }

Possibilities:

There is lots of room for improvement with this application. Just think of all the features most drawing programs have and there’s your list for improvements.

Download executable: mobileSketcher.cab

Download Source Code: mobileSketcher.zip

Feedback:

Want more? What else would you like to see? The managed API for using a Window Mobile camera is a great feature that is very powerful and very easy. Use it in your next mobile application or your first.


Sunday, June 22, 2008 1:17:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Saturday, June 21, 2008

Yesterday, I had a really hard time between choosing to do a Mobile Speedometer or a Mobile Altimeter. But another day gives us another opportunity, and today we shall create the Mobile Altimeter.

image

Mobile Altimeter

This will make the third application in the 30 Days of .NET series that has had targeted GPS capabilities. We have created a compass, a speedometer, and now a altimeter. And there are still dozens of applications we could create with the GPS capabilities of Windows Mobile.

This time I decided to a little more with the UI. We have a background that symbolizes “altitude” which is appealing to end users. Plus it gives the program a lot of style and class. On the left side of the screen if you look carefully, you will notice we have an attitude ruler, which has a marker that rises one pixel for every foot higher the device travels up to 180 feet.

This simple feature really takes our application up to the next level. :D (Yeah, I know: I’m terrible.)

At the bottom of the screen we are allowing the user to read all the main stats off the GPS so the application is even more useful. We show altitude in a large bold font in the middle of the screen for impact.

The main event: UpdateData

   1: void UpdateData(object sender, System.EventArgs args)
   2: {
   3:     if (gps.Opened)
   4:     {
   5:         if (position != null)
   6:         {
   7:             if (position.SeaLevelAltitudeValid)
   8:             {
   9:                 labelAltitude.Text = position.SeaLevelAltitude.ToString("0.00ft");
  10:                 if (position.SeaLevelAltitude >= 0 && position.SeaLevelAltitude <= 180)
  11:                     pictureBoxArrow.Top = 173 - (int) position.SeaLevelAltitude;
  12:                 else
  13:                     pictureBoxArrow.Top = 173;
  14:             }
  15:         }
  16:     }
  17: }

Possibilities:

I think a more realistic UI would be a great improvement. And the ability to switch from miles to kilometers would be good too. If the odometer would track miles traveled that would be an awesome enhancement.

Download executable: mobileAltimeter.cab

Download Source Code: mobileAltimeter.zip

Feedback:

Want more? What else would you like to see? There’s been a lot of demand for GPS related applications. Does that help?


Saturday, June 21, 2008 2:07:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  |  Trackback
Thursday, June 19, 2008

How'd we make it this far without a weather application? I must admit its hard to buy anything these days that doesn’t have a weather feature built in. But does everyone understand the basic of writing such an application? That’s what we will explore today.

 

image

Mobile Weather

UI is a little plain. I really think a weather application needs to have a top notch exciting UI, but we’ll keep it simple this time. We have an input section at the top that takes the user’s ZIP Code, and we have an output section at the bottom.

In the output section we have some basic factoids like current conditions and temperature. We also have a forecast for the next day showing date, description, with high and low temperature. And finally we have a graphic to add a little something to an otherwise drab application.

How did we mine this information. Basically I connected to a public weather RSS feed that takes zip code as an URL parameter, using an HttpWebRespone object. I then parsed out the data I need using regular expressions.

There are other ways of doing this type of thing, but I thought this would allow us to use a lot of neat Window Mobile technologies we haven’t explorer before.

Our friend the HttpWebResponse:

   1: private void RefreshData()
   2: {
   3:     string lcUrl = "http://weather.yahooapis.com/forecastrss?p=" + textBoxZipCode.Text.TrimEnd();
   4:  
   5:     // *** Establish the request 
   6:     HttpWebRequest loHttp = (HttpWebRequest)WebRequest.Create(lcUrl);
   7:  
   8:     // *** Set properties
   9:     loHttp.Timeout = 10000;     // 10 secs
  10:  
  11:     // *** Retrieve request info headers
  12:     HttpWebResponse loWebResponse = (HttpWebResponse)loHttp.GetResponse();
  13:  
  14:     Encoding enc = Encoding.GetEncoding(1252);  // Windows default Code Page
  15:  
  16:     StreamReader loResponseStream = new StreamReader(loWebResponse.GetResponseStream(), enc);
  17:  
  18:     string lcHtml = loResponseStream.ReadToEnd();
  19:  
  20:     RefreshScreen(lcHtml);
  21:  
  22:     loWebResponse.Close();
  23:     loResponseStream.Close();
  24: }

 

Last but not least the Regex object:

   1: string conditionsEx = @"<yweather:condition  text=""(?<desc>[^@]+)""  code=""(?<code>[^@]+)""  temp=""(?<temp>[^@]+)""  date=""(?<junk>[^@]+)"" ";
   2:  
   3: Regex regEx = new Regex(conditionsEx);
   4:  
   5: Match m = regEx.Match(input);
   6:  
   7: if(m.Success)
   8: {
   9:     desc = m.Groups["desc"].Value;
  10:     temp = m.Groups["temp"].Value;
  11: }

Possibilities:

The UI needs more polish, but it is useable. There is even more data in this RSS feed than I’m exposing so that is another way to expand on this project and make something awesome.

Download executable: mobileWeather.cab

Download Source Code: mobileWeather.zip

Feedback:

How could we make this application even better? Share your ideas with the community.


Thursday, June 19, 2008 1:59:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Wednesday, June 18, 2008

Being a geek, I have a lot of geek friends. Being friends, we tend to eat lunch together. The only problem is sometimes we have a hard time deciding where to go to eat lunch. This invariably leads to the “Where do you wanna eat?”, “I dunno, where do you wanna eat go?”, “It doesn’t matter to me, you decide.” Well here is a simple solution to this daily dilemma:

 

image

Lunch-O-Matic

Our UI has just enough class to be exciting and interesting, yet simple enough not to cause us too much grief. Seek balance in all things. The concept: restaurant logos flash across the screen, eventually stopping on the chosen food establishment. The application is visual, which is appealing. The application is clear. The user can easily tell which restaurant is chosen by following the ginormous arrow. A light blue background give the app a little warm and the arrow adds character.

We have a folder called LunchLogos. Any png file found is the folder is added to an generic image list at the start of the program. When the user clicks Spin, the logos are randomly displayed on the screen for a random number of times before stopping on a chosen eatery.

If you don’t like a restaurant all you have to do is remove the logo from the folder. If you have a restaurant you like that isn’t in the list all you have to do is add the logo to the same folder, simple, simple.

Again for this application we used the RNGCryptoServiceProvider class to generate a statistically sound random number.

   1: private int GetRandomNumber(int minValue, int maxValue)
   2: {
   3:     // Use a 4-byte array to fill it with random bytes and convert it then
   4:     // to an integer value.
   5:     byte[] randomBytes = new byte[4];
   6:  
   7:     // Generate 4 random bytes.
   8:     RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
   9:     rng.GetBytes(randomBytes);
  10:  
  11:     // Convert 4 bytes into a 32-bit integer value.
  12:     int seed = (randomBytes[0] & 0x7f) << 24 |
  13:                 randomBytes[1] << 16 |
  14:                 randomBytes[2] << 8 |
  15:                 randomBytes[3];
  16:  
  17:     // Now, this is real randomization.
  18:     Random random = new Random(seed);
  19:  
  20:     return random.Next(minValue, maxValue);
  21: }

And we have created a simple randomize list function to mix things up a bit.

   1: public void RandomizeList(List<string> arrayList)
   2: {
   3:  
   4:     if (arrayList == null) { return; }
   5:     int count = arrayList.Count;
   6:     for (int i = 0; i < count; i++)
   7:     {
   8:         string tmp = arrayList[i];
   9:         arrayList.RemoveAt(i);
  10:         arrayList.Insert(GetRandomNumber(0, count), tmp);
  11:     }
  12: }

Last but not least, we use the Mod function to make sure we can loop around the list when picking images.

   1: private void Spin()
   2: {
   3:     int index1 = GetRandomNumber(0, logos.Count);
   4:     int index2 = (index1 + 1) % logos.Count;
   5:     int index3 = (index2 + 1) % logos.Count;
   6:  
   7:     pictureBoxTop.Image = logos[index1];
   8:     pictureBox.Image = logos[index2];
   9:     pictureBoxBottom.Image = logos[index3];
  10: }

Possibilities:

Well, I think it would be cool if there was a background sound to go along with the spin. I also think a UI for adding and deleting logos would be great. It would be nice to be able to assign weights to each restaurant, and to favor new choices over previously selected places.

Download executable: lunchomatic.cab

Download Source Code: lunchomatic.zip

Feedback:

How could we make this application even better? Share your ideas with the community.


Wednesday, June 18, 2008 12:11:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Monday, June 16, 2008

I’ve had a lot of requests for SMS related applications. So today we will create a SMS logger application. This application will allow users to scroll through a listing of all the SMS / text messages they have received while the application has been running.

 

image

SMS Logger

This is a great application for a beginner to create. It has a very simple UI, the main component is the WebBrowser. The way we can have nicely formatted text easily.

The key piece of code here is the MessageRecieved event off of the SmsIntercepter object.

   1: private StringBuilder documentText = new StringBuilder();
   2: void SmsInterceptor_MessageReceived(object sender, MessageInterceptorEventArgs e)
   3: {
   4:     if (enableInterceptor == false)
   5:         return;
   6:  
   7:     // Cast to SmsMessage to access message body
   8:     // Not expecting to receive any non-SMS messages but use "as" to
   9:     // cast to be extra safe
  10:     SmsMessage newMessage = e.Message as SmsMessage;
  11:     if (newMessage != null)
  12:     {
  13:         documentText.AppendFormat(@"<b>Body:</b> {0}<br/>", newMessage.Body);
  14:         documentText.AppendFormat(@"<b>Name:</b> {0}<br/>", newMessage.From.Name);
  15:         documentText.AppendFormat(@"<b>Address:</b> {0}<br/>", newMessage.From.Address);
  16:         documentText.AppendFormat(@"<b>Last Modified:</b> {0}<br/>", newMessage.LastModified);
  17:         documentText.AppendFormat(@"<b>Received:</b> {0}<br/>", newMessage.Received);
  18:         documentText.Append(@"<br/>");
  19:  
  20:         webBrowser.DocumentText = documentText.ToString();
  21:     }
  22: }

We have a few actions the user do: Start, Stop, Clear, About, and Exit.

Possibilities:

This application logs incoming SMS messages, but it doesn’t do several thing that were requested from our reader. It doesn’t log outgoing messages. It doesn’t save to a text file. And it doesn’t clear out data from Outlook Mobile when the users runs SMS Logger.

I also think there is room to improve the UI. I think some small 16x16 pixel graphic files could really add some life to the application. Maybe one icon for incoming messages, and one for outgoing messages.

So who’s up to it? Anyone want to take this application to the next level? Just let me know.

 

Download executable: smsLogger.cab

Download Source Code: smsLogger.zip

Feedback:

So what possibilities do you see for this type of application? for business? for entertainment?


Monday, June 16, 2008 10:30:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  |  Trackback

Today, is day 15 of my 30 Days of .NET challenge. That marks the 50% point, and we have 15 applications for 15 days. Thanks for your support!

And we have made it through another week. If you missed the week one recap here it is: 30 Days of .NET [Windows Mobile Applications] - Week One.

What’s your favorite?

 

image image image image
Rotate Me Mobile Tipper What is My IP? Mobile Signature

Lots of variety, everything from network utilities, to graphics, to humor, to SMS text messaging. Great ideas, guys!

 

image image image image_thumb14
Mobile Quiz Pocket Death Calculator Mobile SMS Contact What will be next?

 

Feedback:

Got an idea? Got some feedback? Share it? Thanks!


Monday, June 16, 2008 2:48:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [7]  |  Trackback

Today’s application is about possibilities. It’s a new area we will explore in our future applications. It’s important to learn how to development applications, but it is also important to learn what kind of applications you can develop. Your goal is always to reach just a little further, and grow from the experience.

 

The important thing here isn’t what this application does with these ideas, but what you could do with these ideas.

 

People can use SMS to send and receive information through text messages, but with the power of Windows Mobile it is easy for application to send and receive commands and data. There is a big movement for software to expose its features and functions to other programs. But image a world, that probably isn’t too far, where your mobile device has it’s own API that you and others can use to access its data and functions.

Where could this be useful? Well many companies need the ability to send “Alerts” of some kind to their workers. It is easy to use the Windows Mobile SMS API to have a custom written application that check for specially “tagged” SMS messages.

 

image

Mobile SMS Remote

SMS Remote is an application that could run on two or more Windows Mobile device and allow each of the phones run to support “commands” on the phones. For example, a user could get the date and time of another device running SMS Remote. Or the user could run a command to get the other phone’s current GPS location information. The possibilities are limitless. Both devices are both servers and both clients in other words a very simple peer-to-peer network using SMS technology. How cool is that?

What if sometimes we don’t want others to be able to run commands on our device remotely? First of all we could always exit the application. The application must be running in other to execute remote commands. Be I have also added an “Allow Remote Commands” feature.

How can we send SMS remote commands? Use the SMS command ComboBox and choose a command, and enter the remote device’s phone number. Then just click “Send”.

How can we tell what commands have been remotely run on our device? There is a received commands listing at the bottom the screen. It shows the phone number of the device that send the command, the time the command arrive, and which command was requested.

This is a rough prototype of an idea that has HUGE potential. Some point in the next ten years this concept will take off and become something along the lines of Mobile 2.0.

The trick to this application is using the very cooly named Windows Mobile 6.0 SDK MessageInterceptor class. We can use it to have any SMS that begins with “30days:” fire an event in our application that we will then handle. This is very, very, very simple for something so powerful. Use it!

   1: MessageInterceptor _smsInterceptor = null;
   2: private void LoadSmsIntercepter()
   3: {
   4:     _smsInterceptor = new MessageInterceptor(InterceptionAction.NotifyAndDelete);
   5:  
   6:     _smsInterceptor.MessageCondition =
   7:         new MessageCondition(MessageProperty.Subject,
   8:         MessagePropertyComparisonType.StartsWith, "30days:", true);
   9:     _smsInterceptor.MessageReceived += SmsInterceptor_MessageReceived;
  10: }

The rest is simple. Was the SMS a “command” or a “result”? If command we need to run and return a result. If result we need to act on or display to device user.

Possibilities:

I implemented the get date and time function, but not the GPS function. This would be a very useful addition to the application that I would love to say a reader did. Or how about a way to add Internet Explorer Mobile favorites? Or how about something more Web 2.0 like what song is currently playing.

Download executable: mobileSMSRemote.cab

Download Source Code: mobileSMSRemote.zip

Feedback:

So what possibilities do you see for this type of application? for business? for entertainment?


Monday, June 16, 2008 1:58:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  |  Trackback
Sunday, June 15, 2008

Today one of my readers, Paul Diston, made the following request.

Hi,
I have another idea you might be interested in. I would like to be able to type in a single SMS message and then hit the send button which would then send the same message to all my contacts that have a mobile number specified.


Thanks
Paul Diston

The thing that I really liked about Paul’s suggestion is that is cover two very important mobile development topics: one is working with contacts stored in Outlook Mobile, and the other is working with SMS messaging.

image

image Mobile SMS Contact

I changed it a little bit from Paul’s original request. I decided to incorporate a filter into the application. This way you can send SMS messages to your personal contacts, or your business contacts. You could even create a custom category. I didn’t include an option to select contacts that do not have a category assigned to them. This would be a great modification for a reader to implement. Simply add a ‘<none>’ item to the list, and if that item is selected add any contact that doesn’t have a category.

I added a ListView so that users could see the contacts they were about to text message. Another great enhancement, would be the ability to modify this listing. Just a remove option would be a great addition in functionality.

One feature I added as a polishing touch, was the live character count feature. This feature lets users know how much more text they can send. And we have found another opportunity for improvement here. I limit the text to 160 characters, but if someone entered in more text we could send X number of text messages until the complete message was delivered.

Next with have our SMS Message TextBox where we can type the message we will send. Nothing special here, but I didn’t set a MaxLength of 160 characters.

At the bottom I exposed the RequestDeliveryReport property of the SmsMessage class. What ever the user picks here will be assigned to that property.

One feature that I really love about Windows Mobile programming, that especially came in useful for this application was the Cellular Emulator.

GetContacts Code:

   1: private List<Contact> GetContacts(string category)
   2: {
   3:     List<Contact> contacts = new List<Contact>();
   4:  
   5:     ContactCollection contactsCollection = outlookSession.Contacts.Items;
   6:  
   7:     foreach (Contact contact in contactsCollection)
   8:     {
   9:         if (contact.Categories.Contains(category))
  10:         {
  11:             contacts.Add(contact);
  12:         }
  13:     }
  14:  
  15:     return contacts;
  16: }

SendSMS Code:

   1: private void SendSMS()
   2: {
   3:     List<Contact> contacts = GetContacts(comboBoxCategories.SelectedItem.ToString());
   4:  
   5:     SmsMessage smsMessage = new SmsMessage();
   6:     //Set the message body.
   7:     smsMessage.Body = textBoxSMSMessage.Text;
   8:  
   9:     foreach (Contact contact in contacts)
  10:     {
  11:         string name = string.Format("{0} {1}", contact.FirstName, contact.LastName).Trim();
  12:         string address = contact.MobileTelephoneNumber;
  13:  
  14:         if (address.Length == 0) break;
  15:  
  16:         //Add recipients.
  17:         smsMessage.Body = textBoxSMSMessage.Text;
  18:         if (name.Length == 0)
  19:             smsMessage.To.Add(new Recipient(address));
  20:         else
  21:             smsMessage.To.Add(new Recipient(name, address));
  22:         smsMessage.RequestDeliveryReport = checkBoxRequestDeliveryReport.Checked;
  23:     }
  24:  
  25:     if(smsMessage.To.Count == 0) return;
  26:  
  27:     //Send the SMS message.
  28:     smsMessage.Send();
  29: }

Download executable: mobileSMSContact.cab

Download Source Code: mobileSMSContact.zip

Feedback

One thing I decided not to do with this application is spend any time on the UI. I wanted readers to see one application that was plain Jane vanilla. Consider what you could do to this application to make it appealing to end users. Share your ideas, and maybe I’ll do them, or even better try taking the code and making the changes yourself. If you do this for the application or any other I will link to back to you so everyone can “see” and “learn” for your efforts.


Sunday, June 15, 2008 2:10:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  |  Trackback
Saturday, June 14, 2008

Let’s have some fun today. And do an application that is just for kicks. I had a really hard time coming up with a Friday the 13th themed mobile application. I finally thought of one: The Pocket Death Calculator. Yeah, it’s a bit crazy, but it’s good not to take yourself too seriously. There are lots of these Death Clocks on the Internet, here’s a famous one: The Death Clock.

 

image

image

Pocket Death Clock

This application is about how many lines of code you can write. It shows how a simple idea in a good looking package can really charm a lot of people. Most people enjoy a surprise, or something unexpected, something to break the day from being ordinary and routine. Sure you can write the next great mobile financial planner package, or you could write a quick “fun” app to put a smile on someone you know’s face.

The UI is really simple just a background image file, but it is a good looking background image file. And that is pretty much what is pulling off the application. I thought about putting glowing red eyes on a timer and having their visibility randomly change, but decided to leave it as an exercise for my readers. Try it you’ll be surprised how much it really sets off the application. And makes it stand out.

The death calculation engine is straight forward: we take the user’s age and gender and modify the average human life span appropriately. Then we subtract the users present age from their expected life span. Next we calculate the number of seconds in a year. We use our cryptographically strong random function to pick a random second in that year for the user to “die” on. Now we have our death date. It’s a simple matter to calculate the number of seconds the user has left. We put everything on the screen and update on a timer.

There you have it.

Possibilties:

Simple applications always have the best possibilities. We talked about adding glowing eyes. But you could also add random death quotes. You could also ask the user more questions and better guesstimate their death date. You could also “guesstimate” where and how they would die using data easily found on the Internet.

Always good to know you have less than a million seconds before you are going to die from a shark attack in Quebec. Plenty of time to pick up some shark repellent.

 

 

 

 

Download executable: pocketDeathClock.cab

Download Source Code: pocketDeathClock.zip

Feedback:

I think this is our first humorous application, not counting Mobile FX, what did you think of it? Would you like to see more of these types of applications, that are creative idea based, or more of the technically focused applications? I like to keep a good bit of variety to show all the possibilities, so I hope that is working for everyone.

If not, share your idea for tomorrows application.


Saturday, June 14, 2008 12:14:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [5]  |  Trackback
Friday, June 13, 2008

Today we are going to look at another classic goal in Mobile development, data collection. You might need it for a line of business application, for example a field service application where workers need to inspection equipment and fill out a questionnaire. Or you might need it in a mobile poll taker application. You could even use it in a trivia game. There are few applications actually that couldn’t take advantage of a question and answer system like the Mobile Quiz.

 

image

imageMobile Quiz

There is so much potential with this application. I hope you can see the concept and see the potential here. There are a world of possibilities here. Hopefully this application will help you get ever so slightly closer to realizing some of them.

The UI is a straight-forward and clean design, which was easy to make but should appeal to users. Everything is meant to be intuitive and self explanatory. Users should simple be able to look at the screen and get it.

The first screen is an quiz introduction form. All we have here is some eye candy, the name of the quiz, and some basic menu options: Start, About, and Exit.

After this the user is presented with the questions screen. This is the main meat of the application.

Questions are pulled from an XML file which could be retrieved from a remote server.

 

   1: <?xml version="1.0" encoding="utf-8" ?>
   2: <quiz name ="Family Guy Quiz">
   3:   <question>
   4:     <text>In what state do the Griffins live?</text>
   5:     <correct>2</correct>
   6:     <answer>Connecticuit</answer>
   7:     <answer>Rhode Island</answer>
   8:     <answer>Massachusetts</answer>
   9:     <answer>Deleware</answer>
  10:     <answer>South Carolina</answer>
  11:   </question>
  12:   <question>
  13:     <text>What television actor is the mayor of the town?</text>
  14:     <correct>1</correct>
  15:     <answer>Adam West</answer>
  16:     <answer>David Hasselhoff</answer>
  17:     <answer>Leonard Nimoy</answer>
  18:     <answer>William Shatner</answer>
  19:     <answer>Harrison Ford</answer>
  20:   </question>
  21:   <question>
  22:     <text>What is Cleveland's last name?</text>
  23:     <correct>1</correct>
  24:     <answer>Brown</answer>
  25:     <answer>Smith</answer>
  26:     <answer>Craft</answer>
  27:     <answer>Cub</answer>
  28:     <answer>Jones</answer>
  29:   </question>
  30:   <question>
  31:     <text>What is the name of Stewie's stuffed bear?</text>
  32:     <correct>3</correct>
  33:     <answer>Barry</answer>
  34:     <answer>Chris</answer>
  35:     <answer>Rubert</answer>
  36:     <answer>Edward</answer>
  37:     <answer>Paddy</answer>
  38:   </question>
  39:   <question>
  40:     <text>What is Quagmire's profession?</text>
  41:     <correct>4</correct>
  42:     <answer>Developer</answer>
  43:     <answer>Police Office</answer>
  44:     <answer>Barber</answer>
  45:     <answer>Pilot</answer>
  46:     <answer>Teacher</answer>
  47:   </question>
  48: </quiz>

 

It’s a snap to open the XML file and read in all of our data.

   1: DataSet dataSet = new DataSet();
   2: // read quiz data file
   3: dataSet.ReadXml(@"\Program Files\MobileQuiz\quiz.xml");

One thing that I decided was important was to avoid showing modal MessageBox dialogs often. Sick Instead I choose to use a label, place it at the top, set it’s background color to Info, and use it accordingly. This works out great and I think is a much better user experience. Data entry on a mobile device is a huge pain, and if you can take a dialog out of the equation that’s a good thing.

Download executable: mobileQuiz.cab

Download Source Code: mobileQuiz.zip

Feedback

There’s a lot here for a little effort, a couple hours, and there is a huge potential for this type of application. This would be a great project for someone to expand on and create something really special from. Consider it if you are looking for your first mobile project.


Friday, June 13, 2008 2:49:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Thursday, June 12, 2008

image

You know sometime someone tells you about something, and you can tell there is a whole lot more to it than they are telling you about. Well, signature capture for Windows Mobile is one of those things. It’s really not bad today and you can do it in one sitting easily now. But there was a time, when if your life depending on it you might be able to get it right. At least we have managed code now. A few of us attempted to do this feat in embedded Visual Basic years ago and I’m surprised it didn’t cost us our sanity. Oh the humanity…

You could do it you just had to copy each color pixel by pixel and save it into a bitmap, and that was a challenge too. And GetPixel() had to be the slowest function call ever. It took at least a second. No way, you were going to give someone a full screen to put there signature.

That was then, this is now…

image

Mobile Signature

Office 2007 might have 2007 features in it. And it works for Office 2007, well to a point. But with Windows Mobile applications less is more. Don’t get me wrong I really do think Mobile Signature would make a great feature in a more complete application. But as far as the feature of taking a signature on a mobile device this is a great approach.

Also note that Mobile Signature could be easily adapted into a drawing application, and so on, especially for kids.

Let’s talk about UI first. Notice how much space is dedicated to taking the user’s signature. This is important; I’ve seen almost the reverse before and that just isn’t very usable. I took a little extra time and care to make sure all control had a black border around them,expect the black color square. It has a gray border.

One thing to note is a wanted the user to be able to tell what color they would be writing in without having to draw on the screen. This is accomplished by having the borders around the active color flash on and off. This is a great visual effect that was easy to implement with a timer. We track the currently active color in a form level variable, and on the timer tick event, which happens every 500 ms, we toggle the visibility of the border around the active color. Works great! Check it out!

The menu is another area that is simple but you can learn from it. Save is very important to us, so it is prominent and has it own hardware button that can cause it to occur. On the menu we have an option for clearing the screen, showing the about form, and exiting the application. But we also have a menu option to change the size of the line we are drawing with. It can be set from any of the following: 1 pixel, 3 pixels, 5 pixels.

The core of the application is the code that actually draws the lines on the screen. Here it is:

   1: private void pictureBox_MouseMove(object sender, MouseEventArgs e)
   2: {
   3:     if (pen.Color != signatureColor)
   4:         pen = new Pen(signatureColor);
   5:  
   6:     if (pen.Width != width)
   7:         pen.Width = width;
   8:  
   9:     x1 = x2;
  10:     y1 = y2;
  11:     x2 = e.X;
  12:     y2 = e.Y;
  13:  
  14:     if (x1 == -1 && y1 == -1)
  15:         return;
  16:  
  17:     pictureBoxSignature.CreateGraphics().DrawLine(pen, x1, y1, x2, y2);
  18: }

 

One area of code that is worth checking out is the code to save the bitmap of the signature. It’s pretty advanced and powerful.

   1: // P/Invoke declaration
   2: [DllImport("coredll.dll")]
   3: public static extern int BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, uint dwRop);
   4:  
   5: const int SRCCOPY = 0x00CC0020;
   6:  
   7: private void Save(string filename, Graphics gx, Rectangle rect)
   8: {
   9:     Bitmap bmp = new Bitmap(rect.Width, rect.Height);
  10:     // Create compatible graphics
  11:     Graphics gxComp = Graphics.FromImage(bmp);
  12:     // Blit the image data
  13:     BitBlt(gxComp.GetHdc(), 0, 0, rect.Width, rect.Height, gx.GetHdc(), rect.Left, rect.Top, SRCCOPY);
  14:     bmp.Save(filename, System.Drawing.Imaging.ImageFormat.Bmp);
  15:     // Cleanup
  16:     bmp.Dispose();
  17:     gxComp.Dispose();
  18: }

Everything else is pretty straight forward, but check it out and see what you think!

Download executable: mobileSignature.cab

Download Source Code: mobileSignature.zip

Feedback

So, how do you guys feel about line of business applications? Do you want more days that focus on line of business application topics? or less? Let me know! :D Tomorrow will be here before you know it.


Thursday, June 12, 2008 2:48:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  |  Trackback
Wednesday, June 11, 2008

I mentioned to the group that I would post the Prize Picker application we wrote together on my blog as part of my 30 Days of .NET series. I think this was an awesome idea, and it looked like everyone really enjoyed themselves. Hopefully, a few of them will see this post and share their thoughts as well. It was very nice to have a hands on type presentation that everyone got to participate in together. And since only one person was “driving” we didn’t have to stop and fix a disconnected monitor. Ok, we did one time, but just one time. Open-mouthed 

Big thanks to everyone that came out and participated! Page Brooks, Donny Craft, Benton Little, , Jamey McElveen , Shawn Morris, and Thad Smith. It was a lot of fun!

 

PrizePicker

Prize Picker

There is probably someone out there who doesn’t think this is the best looking application ever. Well, you’re right! It’s not, but we didn’t really focus on that any until we had a fully functional application. At that point it was time to pick prizes for the lucky hopefuls that became winners at the event.

The only big item we didn’t implement, was an item that came up right at the end, we wanted to show the last winner in the area down at the bottom of the screen in big blog letters. And we wanted to rotate through remaining hopefuls and then finally pick a winner moving them to the winners table.

The application is a firm believer of the KISS principle. We did the entire application in about an hour and a half. And that is including some refactorings, and changes we made along the way. I’m pretty happy with the application, and will love it once we have the “Jackpot” style UI element added.

We added validation as we needed it, and decided to keep the applications logic in the UI, as hard as it was for us to do, to in this case to follow our KISS guidelines.

We have used RNGCryptoServiceProvider class already in the Pocket PasswordGen application on day six. This class makes sure that our random numbers are statistically random and not pretend watered down random.

   1: Byte[] randomBytes = new byte[4];
   2:  
   3: RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
   4: rng.GetBytes(randomBytes);
   5:  
   6: // Convert 4 bytes into a 32-bit integer value.
   7: int seed = (randomBytes[0] & 0x7f) << 24 |
   8:             randomBytes[1] << 16 |
   9:             randomBytes[2] << 8 |
  10:             randomBytes[3];
  11:  
  12: int pick = seed % listViewHopefuls.Items.Count;

 

Download executable: prizePicker.cab

Download Source Code: prizePicker.zip

Feedback

The cool thing is we used this application to actually pick the winners for the prizes, and everything went great. So our intention is to keep using it from now. We are also going to post it on CodePlex soon and allow others to work on it as well.


Wednesday, June 11, 2008 2:55:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback

Wow, today was a busy day. I gave a Windows Mobile Programming presentation today at a .NET user group I help run, PDANUG. I changed it up at the very last minute, and instead of doing the presentation I was planing on doing we wrote a Windows Mobile application together. It was great. I think everyone contributed, and got something out of it. In the end we had a very nice Prize Picker application that we will be able to use again and again in the future. And I have a new talk that I can present. Any takers?

 

image

What is My IP?

You may have seen sites like WhatIsMyIP.com, IPChicken.com, and my favorite IPCow.com. Most people prefer command prompt and good ole IPConfig. But sometimes when you are troubleshooting an issue with a friend of family member over the phone that’s not always the best idea. Usually in those kind of situations it is easier to send someone to a Web site and just have them read the value to you. I think some of the sites above will render appropriately on a mobile device, pretty sure IPCow.com does.

But what if you can’t connect to the Internet, and you need to see your Intranet IP address. In this case, and many others, one wants something a little more direct, and clear.

For this reason, “What is My IP?” exists. It couldn’t be simpler. Run the program, then see your IP address, or IP addresses in case you have multiple connections open. Which is very possible with today’s devices, with everything from Bluetooth, cellular connections, wireless connections, and more.

This application only does one thing, so it needs to do it very well. And it needs to be appealing in how it looks and how it does it.

Since the application has minimal features, it has a minimalist style to it. There is only one focus point of attention and that is the large network icon in the center of the screen. Everything else is clean and simple.

There’s only one method of note in this application: RefreshData()

   1: private void RefreshData()
   2: {
   3:     string deviceName = System.Net.Dns.GetHostName();
   4:  
   5:     textBoxDeviceName.Text = deviceName;
   6:  
   7:     IPAddress[] addresses = Dns.GetHostEntry(deviceName).AddressList;
   8:  
   9:     comboBoxDeviceIP.Items.Clear();
  10:     for (int i = 0; i < addresses.Length; i++)
  11:         comboBoxDeviceIP.Items.Add(addresses[i].ToString());
  12:  
  13:     if (comboBoxDeviceIP.Items.Count > 0)
  14:         comboBoxDeviceIP.SelectedIndex = 0;
  15: }

Download executable: whatIsMyIP.cab

Download Source Code: whatIsMyIP.zip

Feedback

Not bad 10 applications in 10 days. Won’t be long before we’re at 20 applications in 20 days, and then 30 applications in 30 days. Keep the feedback coming.


Wednesday, June 11, 2008 2:14:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  |  Trackback
Tuesday, June 10, 2008

Tuesday, June 10th, 2008image
Chris Craft

Topic: Windows Mobile Programming

Tuesday, June 10th, 2008, is the next meeting of the Pee Dee Area .NET User Group.

Chris Craft will be presenting at Microsoft Mobility Roadshow alongside Brian Hitney, Glen Gordon, and Lou Vega in Charlotte - June 18, 2008 and Atlanta (Alpharetta) - June 24, 2008. These are full day Windows Mobile device application development events.  PDANUG will be hosting our own special "Welcome to the World of Windows Mobile" event to keep in theme these two MSDN events.
Focus will be Windows Mobile 6.x and using Visual Studio 2008 to developer mobile applications.
Topics to be covered:

  •       Intro to Windows Mobile
  •       Data Guidance (some discussion of line of business applications)
  •       Whole New Level
Speaker Bio
Chris Craft
Pee Dee Area .NET User Group
Florence, SC      
•    Microsoft Windows Mobile Device Application Development MVP
•    Cofounder and regular speaker of Pee Dee Area .NET User Group.
•    Frequent CodeProject.com article author.
•    Expert's Exchange Windows Mobile Programming Master.
Email: ccraft@pdanug.net
Web: http://pdanug.net/
Blog: http://cjcraft.com/blog/


Here is the tentative schedule:
6:00 PM - 6:20 PM Socializing / Free Dinner
6:20 PM - 6:30 PM Introduction, Sponsor Time, and News.
6:30 PM - 8:00 PM Presentations


Tuesday, June 10, 2008 11:52:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback

Microsoft has published a SKU Matrix for Windows Mobile 6.1, and there is also an older one for Windows Mobile 5.0.

imageWindows Mobile 6.1 makes it easier to stay connected and manage your busy life—from just about anywhere. Windows Mobile 6.1 is full of enhancements, made with your needs in mind. Think about this: When you text with a friend, the messages thread together, just like instant messaging—no more confusion about what you’re talking about. Connecting to a Wi-Fi network is now simpler—no more scrolling through multiple pages; a single click and you’re connected. And Windows Mobile 6.1 runs on a growing variety of phones, including touch screen devices with slide-out keyboards, sleek full-keyboard smartphones, and compact flip phones.


Tuesday, June 10, 2008 9:46:43 AM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  |  Trackback
Monday, June 09, 2008

Wow, time sure does fly when you're having fun. Since the beginning of the June, we have already knocked out over a half-a-dozen applications. It's hard for me to choose a favorite, as there is such variety, and many of you submitted great application ideas. If I had to pick a favorite, I think I would pick Mobile FX, since it is just fun.

What's your favorite?

 

image image image image
Minutes to Midnight Countdown Bluetooth Manager GPS Compass Mileage Tracker

Look at the variety: a countdown time, a Bluetooth control panel type application, a GPS application, and a work utility.

 

image image image image
Mobile Capture Pocket PasswordGen Mobile FX What will be next?

 

Again, we get around as far as application topics: screen shot utility, password generator, a sound FX app, and who know's what we'll do next...

Looking forward to this week's applications? Let's see where we'll go next.


Monday, June 09, 2008 10:08:06 AM (Eastern Standard Time, UTC-05:00)  #    Comments [4]  |  Trackback

image Wow, things are really moving around here. First Lou Vega offers to help with 30 Days of .NET as the VB .NET Editor. And now Christopher Fairbairn has offered to help as the C++ Editor.

A little about Christopher:

Christopher is the leader of the Christchurch .NET User Group. In case you didn't already know, Christchurch is in New Zealand. (Pretty cool reading about their climate, and I didn't realize they are know as the "Gateway to the Antarctic"). Christopher has a great blog mostly focused on Windows Mobile C++ development, which can be hard to find good information on when you are first starting out. Be sure to take a moment and read Christopher's "About Me" page. I think you'll agree that we are lucky to have him on the team, and that we are looking forward to seeing take on device application development for Windows Mobile.

 

So far, Christopher is off to a great start having already reproduced two of the applications I have written. One of the thing I really enjoy is reading the blog post Christopher does for application he translates. He a great job of explaining the nuts and bolts of everything that he is doing. He is very detailed and very thorough, you can learn a lot simply following along with him

Day 01 - 30 Days of .NET [Windows Mobile Applications]: Minutes to Midnight Countdown: C# Edition / C++ Edition

Day 02 - 30 Days of .NET [Windows Mobile Applications]: Bluetooth Manager: C# Edition / C++ Edition


Monday, June 09, 2008 2:44:39 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback

We have discussed the ability to assign an Windows Mobile application we have created to a device's hardware button. Once with our day two application, Bluetooth Manager, and once again with our day eight application, Rotate Me.

By default my device's buttons are configured as follows: "Button 1" starts "Internet Explorer", "Button 2" starts "Messaging", "Button 3" starts the "<Start Menu>", "Button 4" starts "<OK/Close>", and finally "Button 5" starts the "<Camera>". If you look at the screenshots below, you'll noticed I changed "Button 2" to start the "Rotate Me" application instead. This is the "as good as it gets" way to start an application; doesn't get better than one button press access.

Just in case everyone isn't aware of the feature in Windows Mobile, I've posted the steps here:

First click the "<Start Menu>", now click on "Settings" menu item, next click on the "Buttons" icon under the "Personal" tab, finally select a button and assign it a program. It's that easy.

image image image image


Monday, June 09, 2008 1:41:21 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback

Yesterday, I read the following suggestion for the 30 Days of .NET series.

"How about a program to manually rotate from portrait to landscape, the millions of new HTC Diamond owners would love that :-)"

- Alex

Lucky guy, the HTC Diamond is a gorgeous device. I mean really, really good looking device - if Scarlett Johansson were a phone good looking here.

Don't take my word for it. See for yourself:

image

image

 

 

 

 

 

 

 

 

 

image

image On my HTC device there is an today plug-in named "HTC Home", that gives me an icon I can click on my today screen which will rotate my device's screen. See screen capture, I've converted everything else to grayscale.

This is a great little app, that does everything it claims it will do. Only thing is I hate it. I hate it because it doesn't do what I want it to do. It rotates through all four combinations of screen directions: top (0 degrees), left (90 degrees), bottom (180 degrees), and right (270 degrees). See that's the rub, never want to see my device upside down.

So basically, every time you click this icon the screen rotates 90 degrees, which means I have to go through what I consider two junk orientations, bleh.

I think we can do better.

This is probably going to be the easiest application we write. Thanks, Alex! ;D

I considered a few approaches to this application. I thought about following the same model as HTC and placing the application somewhere on the Today screen. Basically there are three ways to accomplish this. One we could write a today screen plug-in, but this isn't straight-forward in an managed application. There is a way to do it however: Creating a Pocket PC Today Screen Plug-in with the .NET Compact Framework.

Or we could create a task tray icon for our application. If you look right about the Contacts menu item in the bottom right of my screen, you can see three application task tray icons. Again, I felt this was more work than worth. But here how you could do it: Using the Microsoft .NET Compact Framework MessageWindow Class.

Finally, I though we could add an icon to the notification area at the top-right of the screen. If you'll look at my screenshot again you'll see where I have 6, count them 6, notification icons on my device. Everyone is doing this lately, and it starting to get out of hand lately. But if you like here's the information you'll need to accomplish this: Programmatically create and display Notifications.

So what was my solution? Well, I decided to leave well enough alone. This leaves the end user three choices, one assign the application to hardware button, to assign the application to a today screen plug-in that can launch other applications, and three to simply run the application manually. A lot of today screen plugs-ins have application launchers capabilities. Back to my screenshots, the today screen plug-in at the top of the screen allows for nine applications to be started from it. I've highlight the icon for Rotate Me, and made the rest the screen grayscale.

So how hard is it to check the screen orientation and change it? You tell me.

using Microsoft.WindowsCE.Forms;

if (SystemSettings.ScreenOrientation == ScreenOrientation.Angle0)
    SystemSettings.ScreenOrientation = ScreenOrientation.Angle90;
else
    SystemSettings.ScreenOrientation = ScreenOrientation.Angle0;

Here's a link to a blog post I did on How To: Assign an Application to a Windows Mobile Device's Hardware Button in case you need it.

Sometimes it is surprising just how much you can get for such little time and effort. That's the power of the .NET Compact Framework.

Well, that does it for today. Here are the binaries. Hope you enjoy them.

Download executable: rotateMe.cab

Download Source Code: rotateMe.zip

Feedback:

Thanks guys, it's been fun. Keep the ideas coming. Don't wait until the last minute. I hope these applications are helping you realize the raw rapid application development power of the .NET Compact Framework.


Sunday, June 08, 2008 11:00:25 PM (Eastern Standard Time, UTC-05:00)  #    Comments [4]  |  Trackback
Sunday, June 08, 2008

This is my favorite application so far. The concept is awesome. It takes the idea of a "sound effect keychain", and make it into a fully open and extensible mobile application.

image

Mobile FX

So if you are following me, then you know that if you press the birds button you'll hear a birds sound effect, and if you press the bomb button your hear a bomb sound effect, and son on down the list.

This application tries to be as much about form as it is function. All of the icon graphics are created with Axialis IconWorkshop. (Thanks for the heads up, Jamey!) It makes making really great icons a snap using its Image Object Packs. (See the image to the right for a small sample.)

image

What I really like about this application is there is the possibility of creating add-in sound packages. I'll discuss this more in a follow up blog posting to come soon. [If there is interest? Let me know.]

The way the application works is it looks for an XML file that tells it where each of its possible icons are and where the sound files for each icon are located as well. If you want to change the order of the icons on the screen just change the order of the "buttons" in the XML configuration file.

I haven't completed the extensibility point for others to add there own icons and sounds but that is a small enhancement which I'll do shortly.

 

 

 

 

 

 

 

 

Download executable: mobileFX.cab

Download Source Code: passwordGen.zip

Feedback:

How interested are you guys in the follow up article? Is this something you would enjoy? Would you like a second pack of sounds? Is this application something you would use? Would you create a sound pack of your own?


Sunday, June 08, 2008 2:52:33 AM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  |  Trackback
Saturday, June 07, 2008

I had a couple submissions for ideas to use in today's application, but decided I would use one of my own. Friday night and all: girlfriends like to go out on Friday evenings, we need to go shopping, and later we want to watch a little TV together, so I didn't feel tonight was the best night for a big project.

My idea is a simple yet very useful application for generating random passwords.

image

Pocket PasswordGen

Nothing too fancy here. It's a good looking application, but it didn't take much to make it so. Just clean layout and simple design. I did add a horizontal ruler line between the inputs and the outputs. It is actually two panels set to 1 pixel high each with ones back color set to light blue and the other pure white. The form's background is just a little off-white to add some warmth, but it is hard to tell directly.

The application engine is also clean and simple. There is a password class that has properties for each of the options, and there are two methods: Generate, and ConvertToPhonetic.

I have four character groups:

     static string  lowerCase = @"abcdefghijklmnopqrstuvwyxz";
     static string upperCase = @"ABCDEFGHIJKLMNOPQRSTUVWYXZ";
     static string numbers = @"0123456789";
     static string punctuation = @"~!@#$%^&*()-+='"",.?";

Based on options the user chooses a character list is created with all possible characters for the user's password.

Next I Generate PasswordLength worth's of characters for the password.

This is very important. I use RNGCryptoServiceProvider to generate a random seed number for the random number generator. We want real random numbers, not wishy-washy random numbers. This is a good source for how to use Crypto providers to make a password generator.

Pretty cool code, so check it out if you haven't ever generated random numbers before.

I pulled the Phonetic Alphabet off Wikipedia and made it into a generic dictionary object.

Lastly, I added a menu item that allow users to copy the password to their clipboard. I had to write some code to copy text into the clipboard. This is the best code I could find for doing so.

BTW, there is a bug in the above screenshot. Fixed in the current release. Can you see it? It's subtle. It has to do with the handle the last character. Good luck finding it.

Download executable: passwordGen.cab

Download Source Code: passwordGen.zip

Feedback

Nothing but positive feedback so far. I really appreciate. It seems we are off to a good start. Still I have another 24 days left, and only a handful of ideas I really like. So don't keep that good idea to yourself. One comment on the blog and you might have yourself your first Windows Mobile custom application.


Saturday, June 07, 2008 1:35:45 AM (Eastern Standard Time, UTC-05:00)  #    Comments [5]  |  Trackback
Friday, June 06, 2008

Today was a day I get to pick what I was going to write. One thing I've been doing a lot of lately is taking screenshot captures of either my emulator or my device. I don't know if there is a perfect solution for this, but I figured this would be a great "pain" to try to overcome.

Also, I just think this is a great utility to learn from and to use.

image

Mobile Capture

As always, let's look at how the application looks. Noticed I had more controls than I could put on one screen. Or if I could put all the controls on one screen it was going to look like a train wreck. I really try to make it so that if the user has to do something "tedious" like data entry, especially on a mobile device, that there is some sort of "cool" factor for the user to "experience".

In this case, I decided to make 3 sections to the form and have each fill the screen in response to the user clicking either the light blue "Capture", "Activation", or "Option" buttons. Notice how I disguised the buttons to look like section headers.

With a little effort each section could expand open as a visual effect, I choose to have the section just instantly pop to their minimized or maximized states. This would be a great feature enhancement for an enterprising reader to tackle. Just a matter of fine tuning it.

As far as features go, we have a lot happening there as well. Full Screen mode, Area mode, Hardware Key support, Time support, and the ability to take multiple pictures in a row.

That's a lot of application to take on in one day, and really only a couple of hours, but that's how we do it around here.

One issue I ran into was I managed to confuse myself. I though when I called Form.Hide() that is wasn't hiding the form's menu bar in time before the screenshot was taken. So I went and found the following blog article: Christian Helle's Blog: Programmatically Minimize an Application in .NET CF 2.0. Work's fine, but so does Form.Hide() just didn't figure it out for a while. Figured I'd leave imageChristian's code in for while since it is more interesting, P/Invoke and everything.

I wasn't quite sure the best way to take a screenshot anymore in .NET Compact Framework, so I looked that up to find a better way. I found this: Alex Yakhnin - Creating a screen snapshot in CF v2. And I decided it would do lovely, and it has so far. I haven't had the first problem with it.

Does anyone recognize where the feature set of this application is based on? It is a very famous Windows graphics program that was really popular a few years back now. Give it a guess.

The .NET Compact Framework HardwareButton device component made working with the device's hardware buttons a snap.

The way the application figures out what it needs to do between on the various combinations, and there are a lot of them, is pretty cool to check. Notices I didn't say clean and slick, just pretty cool. It could use some clean up.

I'm really happy with the UI; it was a simple trick to pull off the effect but I think it works great. Try it out see what you think! Alright well I think that wraps up day 05, I hope you like the

application.

 image

 

 

 

Download executable: mobileCapture.cab

Download Source Code: mobileCapture.zip

 

Feedback

I'm looking forward to seeing where we go next. I hope you are too. There hasn't been a lot of comments yet but I know word hasn't really gotten out yet either. But feel free to post your comments and ideas.


Friday, June 06, 2008 2:46:56 AM (Eastern Standard Time, UTC-05:00)  #    Comments [3]  |  Trackback
Thursday, June 05, 2008

I wasn't sure what to do for day four. I knew I wouldn't have a ton of time to work on it so it needed to be something short and sweet. That's when one of my closest friends, Chris Reeder, paid me a visit and told me to take a look at a comment he left for me on my blog. Chris runs a Web site you may know, StupidProgrammer.com. If not you should check it out.

I would like to recommend a mileage tracking application using a SQL CE database (had to get SQL into the app).

I decided this would be a great application for today. Unfortunately I multiple sets of unexpected visits from friends and family tonight and just about didn't have any time to sit down and knock this one out. But once I cut some features: SQL CE, metric support, stats graph, and the ability to compare MPG (etc) over time, it wasn't so hard. :D

image

Mileage Tracker

I think tomorrow I'll do an application of my own choosing, you guys can't have all the fun. But I'm glad for the participation. Thanks!

First thing to discuss is the design. There is some eye-candy but it is really minimum. Just a pretty background. Actually it is a background based on Windows Live Messenger's default theme. Just enough color to not be sterile.

First issue I ran into with this was transparent labels. The .NET Compact Framework for some reason does not support these. You can set it to transparent it just isn't implement and it doesn't do anything. The way I got around this was to following this guide: Alex Yakhnin - Transparent labels. (There's a minor typo: the Graphics grx object that is passed into the method is called gxOff inside the method. Just correct that and everything works great.) Very nice work-around Alex.

Not to the technical design: I had to decide what calculations I was going to support. I decided I wanted to do the following:

  1. Miles Per Gallon: required I know total distance and total fuel used. (standard mpg value)

Gallons Per 100 Miles: no new information needed. (How many gallons does it take to make it 100 miles.)

Cost Per 100 Miles: I would have to also get price per gallon. (How much does it cost to travel 100 miles.)

Maximum Range: I would need the user to provide total gallons tank can hold. (How far could I travel on a full tank of gas.)

The menu has Clear, About, and Exit menu items that are all basically self explanatory.

I decided to break out the fields and calculations into a separate class called Mileage.

I almost forgot to make a custom icon for this application. I would have hated that. I really dislike the default icon and try to always replace it.

Once again we take advantage of the custom string formatter in the .NET Compact Framework. By using .ToString("0.00") we always get numbers to two decimal places, versus huge unwieldy and unsightly values.

Like I said, "short and sweet". I hope you like it.

Download executable: mileageTracker.cab

Download Source Code: milesageTracker.zip

Feedback

So I think we are off to a great start. Today request is for reader to help spread the word and let others know about this resource. These are meant to be great resources for training and proof of the rapid application development power of .NET Compact Framework and Windows Mobile. So if you are enjoying this series and know someone else who might maybe you should let them know about us?


Thursday, June 05, 2008 1:02:29 AM (Eastern Standard Time, UTC-05:00)  #    Comments [4]  |  Trackback
Wednesday, June 04, 2008

For day three, I  had already decided to write a GPS Compass application, short and sweet. It just so happens I received a comment from Paul Diston today (see below) asking for that very thing. It's a small world.

Hi,
I may have an idea that you might be interested in. I have a GPS receiver in my device and use the GPS Sample as provided with the Windows Mobile 5 SDK. I would be interested in a 'snail trail' kind of application which would draw your current location and keep track of your movements, a simple line showing your movements would be great. Also maybe a compass type application which would calculate your bearing.
I have had some success with these ideas however I just don't get the time to explore them further.
Thanks
Paul Diston

image

GPS Compass

Again we have another 30 Days of .NET application that was at least in part due to a reader's request. So keep them coming gang.

I'm not a graphics designer, but as I've mentioned before I believe it is important for a program to have some eye candy. It needs to look good and professional. Now beauty is in the eye of the beholder and you may be thinking GPS Compass is ugly, but the point is I tried, and IMHO I think it looks decent.

Now did I draw the compass rose you see to the right? No. I went to Wikipedia and found one in the public domain here. But that's my point it is important to make best use of all the resources you have at hand. Notice I didn't spend hours trying to do it myself only to end up with a nonprofessional looking graphic.

Once I had the base I need for the aesthetic design of GPS Compass, it was time to decide how to design the GPS engine. I narrowed the possibilities down to the following: access the GPS as a serial device, use the OpenNETCF GPS Library, or use the GPS Intermediate Driver.

I decided to use the GPS Intermediate Driver since it is fairly new, and it as the documentation says, "It is useful because it provides an intermediate layer that abstracts the actual GPS device from developers and manufacturers."

One thing about hardware nobody builds anything the same way. There are always like quirks and variations. If somebody else volunteers to let that be there problem you'd be wise to take them up on the offer.

Next I needed a way to test the application. I have an AT&T Tilt, that I love, and it does have built-in GPS but it isn't going to work from almost the dead center of my house. Fortunately Microsoft loves their developers and have included a Fake GPS utility for this very purpose. "FakeGPS uses text files containing GPS data to simulate the functionality of a GPS receiver." I really like this tool it just works.

I read through the GPS Intermediate Driver reference material and found the object I was interested in: GPS_POSITION. For this simple application all I really needed was access to flHeading: Heading, in degrees. A heading of zero is true north.

At this point I discovered that the Windows Mobile 6 SDK included a GPS Application in the samples folder, C:\Program Files\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS.

I checked it out and realized it would be a snap for me to take the sample and convert it over to what I needed. Sure I could have duplicated the effort, but everything I needed was right there waiting for me to take advantage of it. Again, always remember to make the best use of all the resources you have available.

The GPS Application has a nice status screen which I moved to a menu item option. I mean the main event here is obviously the sexy screen you see above. A few nips here, and a few tucks there, and I was done.

One thing to be aware of is the sample, and the GPS Application it stands on top of are great base applications to build almost any GPS application you can think of.

There is nothing stopping any of you from taking this and creating your own .NET Application of the Day. And if you do let me know and I'll mention your application.

Download executable: gpsCompass.cab

Download Source Code: gpsCompass.zip

Feedback

We only have 27 days left for you to submit your idea, or even your .NET [Windows Mobile] Application of the day.


Wednesday, June 04, 2008 12:06:44 AM (Eastern Standard Time, UTC-05:00)  #    Comments [6]  |  Trackback
Tuesday, June 03, 2008

image Lou Vega, leader of the Charleston, SC .NET User's Group, asked me if he could be the VB .NET Editor for 30 Days of .NET. Again my goal is to make this as much of an open forum as possible. Since its hard to do that with one person, and Lou totally rocks, I said of course, thank you!

Basically Lou is going to take up the task of converting each of the applications to VB .NET. This is a huge boon for the community. If you are a VB .NET programmer and you want to do Windows Mobile development you will quickly discover that only something like 1 in 10 examples are done in VB .NET, if that many. And outside of Microsoft almost all content is done in C#.

I understand the decision Microsoft made. Basically most Windows Mobile developers, at least in the early days, had a background in C++ and usually Win32 programming. Microsoft wanted to cater to these developers, and win them over for the success of the platform. Also, with a new platform guidance is very important. If there was a budget for 10 tutorials that year, then if they were split between C# and VB .NET, there would only be about half as many such examples.

The choice was made to make more examples that could help beginner developers all the way to advance developers, versus having to cut out a lot of material. And trust me in the early days you needed as much help as possible because if you were doing any out of the norm it could be just a little rough. Today things are so much better, if you want to do something it is usually simple and direct.

So with that out of the way let me officially welcome Lou Vega into his new position, and offer him my sincerest thanks. Great idea Lou!


Tuesday, June 03, 2008 3:00:47 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback

Today, Page Brooks was telling to me about a limitation with his Windows Mobile device. His device's battery isn't powerful enough for him to be able to leave his Bluetooth radio on all day. But he really wants to be able to use his Bluetooth headset while he is driving to work in the morning, and on the way back home in the afternoon. One requirement he has is he doesn't want to have to look at the screen to accomplish this.

It would have been real easy to create a Bluetooth Toggle application that simply takes the current state of the Bluetooth radio and toggles it from on to off, and vice versa. Instead, I've decided to build a simple Bluetooth Manager application that will provide our readers with the code needed to create the Bluetooth Toggle application. My hope is that someone from the community will take this code and help Page out.

Technically I make some special "modifications" to the application that should help Page get by for the time being. When the application first starts, it toggles the Bluetooth radio mode. And I added a timer that will begin an auto shutdown after the program has been running for 1 minute. All Page needs to do is assign the application to a spare hardware key and then when he press that key it will toggle the Bluetooth radio on and off, and after 1 minute it will auto shutdown.

So according to Minutes to Midnight I have 2 hours, 21 minutes, and 6 seconds left to make today's application. So let's get on with the show.

 

image

Bluetooth Manager

This application came about due to a reader's request. So be sure to submit your ideas for applications. I strongly favor working on user submitted ideas over my own.

I always like an application to have a little eye candy, and that explains the interactive Bluetooth logo at the top of the screen. It is in color when the Bluetooth is enabled, and grayscale when Bluetooth is off. Clicking the Bluetooth logo toggles the Bluetooth radio from on to off.

I added a multiline textbox so users could see a history of Bluetooth radio state changes. There are buttons to allow users to directly turn the Bluetooth radio on and off.

One caveat is that this uses P/Invoke to access the Microsoft Bluetooth stack dlls.

Here are the calls:

   [DllImport("BthUtil.dll")]
   private static extern int BthGetMode(out RadioMode dwMode);

   [DllImport("BthUtil.dll")]
   private static extern int BthSetMode(RadioMode dwMode);

Also, we had to take advantage of State and Notification Broker API. Here's why: if the state of the Bluetooth radio were to change due to an action outside of our program we wouldn't know about it. That's where SNB API comes in. It allows us to subscribe to notifications for almost any event that we are interested in. The code is below.

   SystemState bluetoothStatePowerOn = new SystemState(SystemProperty.BluetoothStatePowerOn);
   bluetoothStatePowerOn.Changed += new ChangeEventHandler(bluetoothStatePowerOn_Changed);

   void bluetoothStatePowerOn_Changed(object sender, ChangeEventArgs args)
   {
       UpdateScreen();
   }

 

The last thing to check out is the auto shutdown code: it's simple but works great. There is a timer that waits for 1 minute to pass, and then there is a loop for the count of ten, which uses a Thread.Sleep(1000) to pause the application for 1 second each iteration of the loop. This creates a great effect that keeps the user from thinking the application has crashed.

Download executable: bluetoothManager.cab

Download Source Code: bluetoothManager.zip

[Be sure to check out the C++ Edition of 30 Days of Windows Mobile Applications]

Feedback

28 days left to go, and so far we had one idea submitted for an application. Keep them coming. So what do you guys think? Is the format working for you? Any ideas on what we can improve?

 


Tuesday, June 03, 2008 1:01:13 AM (Eastern Standard Time, UTC-05:00)  #    Comments [6]  |  Trackback
Wednesday, May 21, 2008

image

http://www.tcspromo.com/developercontest/

You could WIN $25,000 and a Mobile Game Developer Contract.

The AT&T Developer Program, devCentral, has partnered with Windows Mobile, HTC and mobile game distributor, I-play, to bring you the AT&T Game Development Contest for Windows Mobile. Show us what you've got and have the chance to win $25,000 cash and a distribution contract. Other prizes include $5,000 cash for runners-up.

Key Dates

  • Deadline for submission: July 31st, 2008, 12 am (EST)
  • Winner announcement at CTIA in San Francisco: September 10-12, 2008

 

PRIZES:
ONE (1) GRAND PRIZE: The Grand Prize Winner will receive:
a. the opportunity for a mobile game distribution contract with I-play on I-play's standard terms (subject to the game meeting I-play's quality assurance requirements; any distribution is subject to the conclusion of a standard publishing and distribution agreement between I-play and grand prize winner);
b. the opportunity for placement (as determined by Sponsor) of game on the games portal on AT&T Media Mall, subject to Sponsor's determination of appropriateness in its discretion;
c. $25,000 (US);
d. a trip for winner and guest to the CTIA conference in San Francisco (September 10-12, 2008);
e. the announcement and recognition of Grand Prize Winner at the CTIA conference;
f. passes for winner and guest to PDC;
g. security and certification signing waivers;
h. an HTC Mobile Phone
The total approximate retail value ("ARV") of Grand Prize is $30,000, depending on location of winner's residence, departure times and any airfare fluctuations.
TWO (2) FINALIST PRIZES: The remaining two (2) finalists will each receive:
a. $5,000 (US);
b. a trip for runner-up and guest to the CTIA in San Francisco (September 10-12, 2008);
c. passes for runner-up and guest to PDC;
d. security and certification signing waivers;
e. an HTC Mobile Phone
The ARV of each Finalist Prize is $10,000, depending on location of winner's residence, departure times and any airfare fluctuations.
Trip for Grand Prize Winner and each Finalist Prize consists of: round-trip, economy-class air transportation for two (2) between the major airport with regularly scheduled flights closest to the winner's permanent residence (as determined by Sponsor in its sole discretion) and San Francisco, CA; (b) two (2) nights standard hotel accommodations (one double occupancy room and room tax only) in San Francisco area; (c) ground transportation to/from hotel and airport. Ground transportation may be provided in lieu of air travel if winner resides within 100 miles of San Francisco, CA. If winner is a resident of a jurisdiction that deems him/her to be a minor, parent/legal guardian must travel as the allotted guest. If guest is a resident of a jurisdiction that deems him/her to be a minor, he/she must be accompanied by his/her parent/legal guardian, and such person must pay his/her own expenses unless he or she is the winner. Winner and guest must travel on same itinerary on dates to be designated by Sponsor. All incidental expenses and taxes not specified herein will be the sole responsibility of the winner and his/her travel companion, including without limitation other ground transportation, food, and beverages. Winner and guest will be responsible for all applicable travel and other insurance, all applicable airport charges including without limitation, any excess baggage charges, airport taxes, and tickets are not transferable, refundable or redeemable. Sponsor will not replace any lost or stolen tickets, travel vouchers or certificates. Once booked, no change, extension, or substitution of trip dates is permitted, except by Sponsor at its sole discretion. If the CTIA conference is postponed or canceled, remainder of prize will be awarded as total prize.
Ten (10) SEMI-FINALIST PRIZES:
a. Entry into Microsoft WM Beta Developer Program;
b. WM Certification Waivers
The ARV of each Semi-Finalist Prize is $500.

Wednesday, May 21, 2008 3:00:52 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Friday, April 11, 2008

imageA while back Engadget announced that the iPhone was going to Exchange ActiveSync support.

It just shows you how important enterprise email is, that people will suffer through ActiveSuck, I mean ActiveSync to get it.

So what would be even more impressive than Microsoft getting ActiveSync on the iPhone? How about being able to run .NET Applications on the iPhone.

Wait for it... wait for it... there it is...

Someone has converted the Linux Mono Project for the iPhone. Wow, how cool is that? It is definitely in the early stages of life but it has some really cool possibilities for the future.

[Sources: Dev102.com and Miguel de Icaza's Blog]


Friday, April 11, 2008 3:00:37 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Friday, April 04, 2008

imageDuring my "Welcome to the World of Windows Mobile" presentation at the Atlanta Code Camp 2008 I used Remote Display for Windows CE to allow the attendees to see my device, on my desktop, on the presentation screen. After my talk was over, a few people from the audience approached me, and asked me how I was able to run Remote Display on Vista, and connect with it to my Windows Mobile 6 device.

They told me they had tried to do the same thing, but all they ever got was a "the OS or CPU of this device is unknown to this application" error. I explained that this wasn't due to Vista, but actually was caused by a missing file on most newer Windows Mobile devices.

In order to use Remote Display the first thing you will need to do is download the Windows Mobile Developer Power Toys, and install the ActiveSync Remote Display application.

Windows Mobile Developer Power Toys

ActiveSync Remote Display - Display Pocket PC applications on your desktop or laptop without needing any device side configuration.

Work Around:

Copy the cerdisp2.exe file from the desktop's "\Windows Mobile Developer Power Toys\ActiveSync_Remote_Display\Devices\wce400\armv4\" folder, and paste it into the device's "\windows" folder of your Windows Mobile device.


Friday, April 04, 2008 3:00:06 AM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  |  Trackback
Wednesday, April 02, 2008

image You can download the Windows Mobile 6.1 emulator images here.

Download Size:
184.9 MB - 457.1 MB*

*Download size depends on selected download components.

Overview

The Windows Mobile 6.1 Emulator Images package adds emulator images to Visual Studio 2005 or Visual Studio 2008 that let you test applications for Windows Mobile 6.1. For general information about writing software for Windows Mobile, please see the Windows Mobile Developer Center.
The emulator images can also be used as standalone without Visual Studio. They can be accessed through the Start Menu shortcuts.


Available locale:
0409 USA English
New emulator image resolutions:

  • Windows Mobile 6.1 Standard
    DPI: 131 - Resolution: 320 x 320 pixels
    DPI: 131 - Resolution: 400 x 240 pixels
    DPI: 131 - Resolution: 440 x 240 pixels
  • Windows Mobile 6.1 Professional
    DPI: 96 - Resolution: 240 x 400 pixels
    DPI: 192 - Resolution 480 x 800 pixels

Wednesday, April 02, 2008 3:00:49 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Tuesday, April 01, 2008

imageOf course, I would get this on April Fools Day, but I've verified it and it is for real!
Dear Chris Craft,

Congratulations! We are pleased to present you with the 2008 Microsoft® MVP Award! The MVP Award is our way to say thank you for promoting the spirit of community and improving people’s lives and the industry’s success every day. We appreciate your extraordinary efforts in Device Application Development technical communities during the past year.

This is a great honor and privilege for me to have received. Thank you Microsoft, it means a lot to me!

What is a Microsoft Most Valuable Professional, MVP?

http://mvp.support.microsoft.com/

Microsoft Most Valuable Professionals (MVPs) are exceptional technical community leaders from around the world who are awarded for voluntarily sharing their high quality, real world expertise in offline and online technical communities. Microsoft MVPs are a highly select group of experts that represents the technical community's best and brightest, and they share a deep commitment to community and a willingness to help others.

Tuesday, April 01, 2008 11:52:53 AM (Eastern Standard Time, UTC-05:00)  #    Comments [3]  |  Trackback

imageWindows Mobile 6.1 is coming!

What's new? [from MSMobiles.com]

  • both Silverlight and Adobe Flash are included in the operating system!
  • new version of Internet Explorer Mobile included with full-screen web browsing
  • threaded text messaging
  • several existing phones will get upgrade to Windows Mobile 6.1 (see original source of the story [above])
  • improved support for enterprise mobility thanks to compatibility with System Center Mobile Device Manager 2008
  • new feature: Getting Started Center - that is supposed to help with configuration of WiFi, email, Bluetooth, etc.
  • more functionality built-in into home-screen, including music playback

Windows Mobile 6.1 Screenshots: PocketNow.com, Gizmodo.com, BoyGeniusReport.com


Tuesday, April 01, 2008 3:00:30 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Monday, January 14, 2008
image

Ars Technica has a great article on something new developing at Yahoo.

From the sound of it, Yahoo Mobile Developer Platform may be a lot like what many are expecting from Apple's iPhone SDK. Developers will be able to write a single mini-application that will be made available through Yahoo's Widget Gallery, where users can cherry-pick their favorite widgets to use on their phones. There are already a handful of widgets available from big names like MySpace, MTV, and eBay, and Yahoo said that a full SDK with guidelines would be available "soon."

Yahoo! Mobile Developer Platform

Yahoo! Mobile Developer Home

Yahoo! Mobile Developer Blog

Hopefully this will encourage Microsoft to release SideShow for Windows Mobile, before someone else does it first.


Monday, January 14, 2008 5:00:34 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Saturday, January 05, 2008
Saturday, January 05, 2008 5:00:07 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Wednesday, February 14, 2007

You probably already know that Daylight Saving Time has been extended by 4 weeks. This is a result of the Energy Policy Act of 2005. It will begin 3 weeks earlier in the spring, and end 1 week later in the fall.

If you have a Windows Mobile device you should know that your devices are probably not ready for this decision. Just in time, Microsoft has released a series of updates that should correct for this.

Windows Mobile Updates for Daylight Saving Time (PocketPC)

Windows Mobile Updates for Daylight Saving Time (Desktop Tool)

Windows Mobile Updates for Daylight Saving Time (Smartphone)

Windows Mobile Updates for Daylight Saving Time (Windows CE)

So now the question is does it support cold-boot recovery or does the device forget about DST everytime the battery dies etc? Hmm... ;) [Windows Mobile & DST: It's like nailing jelly to a wall.]

The Making of the Windows Mobile Updates for Daylight Saving Time

In the begining Microsoft had a knowledgebase article that simply listed the registry changes that needed to be made and left it up to the poor reader to implement the modifications.

I couldn't help but thinking isn't that like Microsoft saying you need to chop down this tree and here's an axehead. Huh? I hate to think it is really all that difficult to create an Windows Mobile cab file. ;)

Fortunately, edgeblog took the requirements and released the results as a cab file.

It's even worse for Windows CE device users. (BTW did you notice any update links missing up above!) Here's an article that gives their options:

Method 1 (for end users): Manually adjust the clock for daylight saving time
You can manually adjust the clock for daylight saving time. To do this, follow these steps:

1. In Control Panel, open Date/Time.
2. In the Date/Time Properties dialog box, make sure that the time zone is set to the correct time zone for your area.
3. Click to clear the Automatically adjust clock for daylight saving check box.
4. Click OK.
5. Manually adjust the clock at the start of daylight saving time and at the end of daylight saving time.

Ha, I love it! That's funny! There's a method 2, and it basically says contact the OEM. Ha! Stop! Your killing me! No seriously, I really laughed out loud when I read that.

Can't you see the new advertising campaign: Windows CE now with Manual Clock 2.0!


Wednesday, February 14, 2007 8:33:26 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Sunday, February 11, 2007

Well, gee isn't that spiffy? There are two things I don't like about this picture. One, what is "Windows Mobile 2003-based device connectivity" exactly? Two, why can't I just end pid 2812 directly from this screen? Are Exit, Ignore, Retry really the only options a person has?

Once more I'm thrust upon the hours of dilemma, should I just use the Windows Task Manager to find out about this process or should I bring out the big guns from the get go and use Sysinternals' PsKill?

"PsKill is a kill utility that not only does what the Resource Kit's version does, but can also kill processes on remote systems."

Ah, makes you nervous doesn't it? I bet someone is checking their firewall status right now. ;)

Let's see how Windows Task Manager fairs. Well I browse through my running processes and I don't see anything that could be 2812. Hmm, I'm running on Windows Vista and I do have a services tab on my Windows Task Manager. Let's check here next...

There it is! A quick internet search and we find out what WcesComm and RapiMgr is.

wcescomm.exe is not a Windows system file. The process listens for or sends data on open ports to LAN or Internet. The process starts when Windows starts (see Registry key: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run). The program is not visible. Therefore the technical security rating is 44% dangerous.

The program is not visible. File rapimgr.exe is not a Windows system file. The application listens for or sends data on open ports to LAN or Internet. The program can be removed using the control panel Add\Remove programs applet. Therefore the technical security rating is 43% dangerous.

ActiveSync reincarnated! Vista! Say it ain't so! See combined ActiveSync is at least 87% dangerous. I bet when it is all said and done, ActiveSync is 17437% dangerous.

Oh well, we stop the services and try again.

Success!


Sunday, February 11, 2007 9:08:13 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Saturday, February 10, 2007

Microsoft releases Windows Mobile 6 Software Development Kit

Windows Mobile 6.0 SDK - Professional

Windows Mobile 6.0 Software Development Kit

The Windows Mobile 6 SDK adds documentation, sample code, header and library files, emulator images and tools to Visual Studio that let you build applications for Windows Mobile 6.

Windows Mobile 6.0 SDK - Standard

Windows Mobile 6.0 Software Development Kit

The Windows Mobile 6 SDK adds documentation, sample code, header and library files, emulator images and tools to Visual Studio that let you build applications for Windows Mobile 6.


Saturday, February 10, 2007 7:27:20 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Monday, February 05, 2007

My new favorite expression is "It's like nailing jelly to a wall". I find it to be a very useful expression in software development and IT, especially in the write anything, for anyone, at anytime, for any price world of mobile enterprise application development.

I've found a valuable scientific resource which probes this very important topic:

"We've all heard the old saying "it's like nailing jelly to a wall" to describe a task that is very difficult or impossible. But is our view of the difficulty of this task justified? Has anybody actually tried nailing jelly to a wall? In this experiment I attempt to establish, one way or the other, the validity of the old proverb."

http://graeme.woaf.net/otherbits/jelly.html


Monday, February 05, 2007 3:47:31 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  |  Trackback
Saturday, February 03, 2007
 
The Microsoft Windows Mobile Device Center enables you to set up new partnerships, synchronize content and manage music, pictures and video with Windows Mobile powered devices (Windows Mobile 2003 or later). The Windows Mobile Device Center is only supported on Windows Vista.
 

Saturday, February 03, 2007 8:59:51 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Monday, August 21, 2006

Today our team wanted to be able to determine the AssemblyVersion of a Compact Framework application from the developer's desktop without having to access the source code, or install it on a Windows Mobile device.

The first place we checked was inside Windows Explorer in Details View. We found the "File Version" and the "Product Version" details. The only problem here was they were both set to empty strings.

The next best option was Lutz Roeder's Reflector for .NET. Okay, now we can see Assembly Version 1.4.3.0. We're cooking with gas now.

I'm still thinking this would make a good shell extension, right-click an assembly and get a message box displays with the assembly's main stats.

I did a little researching and found out, on The Moth's blog, that this is a known issue with the .NET Compact Framework.

"The Compact Framework does not support the AssemblyFileVersion attribute."

"Also learned the Product Version of your file can be set with the AssemblyInformationalVersion."

Neil Cowburn stopped by to point out his blog post on HOWTO: Add the Win32 file version to your .NET Compact Framework assemblies. I did actually attempt to get to this article from The Moth's blog, but the link didn't find the article directly. Looking at the date I think I can guess why.

Daniel Moth further clarifies the root cause and cases of the issue we were seeing, and as matter of fact it was indeed a .NET Compact Framework v1 application that had been updated to v2 that we weren't seeing the file version information. Thanks guys. Now we know it's "by design", and have a another work around as well.


Monday, August 21, 2006 1:43:48 PM (Eastern Standard Time, UTC-05:00)  #    Comments [2]  |  Trackback
Tuesday, April 04, 2006

A useful tool for keeping on on what and when Webcasts are happening.

Interactive Microsoft Webcast Calendar

This interactive calendar will quickly help you find live webcasts that fit your schedule as well as on-demand webcasts to view at your convenience. You can choose your time zone and filter this list by intended audience, webcast series, product or topic, and presenter. Select "Filter Webcast Listings" below to access the filters.

 

 


Tuesday, April 04, 2006 6:55:21 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Friday, March 17, 2006

Alex Yakhnin pointed out a great post from the Windows Mobile Team Blog, "Why Persistent Storage Is A Good Thing".

Looks like there are some pros and some cons, but for the most part a postive change. I tend to work with large amounts of data on Mobile Devices so performance is key and paramount to success.

 


Friday, March 17, 2006 10:41:51 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Monday, January 09, 2006

January 2006
Topic: Our First Meeting / Web Security

We are proud to announce the details for the first Pee Dee Area .NET User Group meeting. The meeting will be held on January 10, 2006 at the McLeod Plaza Classroom in McLeod Medical Plaza. We will kick things off at 6:00 PM.

            The big prize for the night will be a brand new copy of Halo 2 for the Microsoft XBox!

Here is the tentative schedule:

6:00 PM - 7:00 PM Socializing / Dinner
7:00 PM - 7:10 PM Introduction and Sponsor Time
7:10 PM - 7:15 PM News Items & 1st Drawing
7:15 PM - 7:55 PM Presentation
7:55 PM - 8:00 PM 2nd Drawing and Wrap Up

Click Here for Driving Directions

Directions to the Classroom
Enter the McLeod Medical Plaza using the 800 Cheves St. entrance (Bottom Right-Hand Corner of Map)
Take a left and look for room (PC - Plaza Classroom) it’s on the first floor.

McLeod Campus Map

Contact Information:

Chris Craft
843.230.4620 [cell phone]

Thanks,
The PDANUG Team


Monday, January 09, 2006 8:13:57 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Friday, November 18, 2005

The company I work for Taylor Data Systems has just recently become a Microsoft Certified Gold Partner.

Gold Certified Partners represent the highest level of competence and expertise with Microsoft technologies, and have the closest working relationship with Microsoft.

We specialize in Windows Mobile solutions for enterprise level applications. We've worked very hard to make it to where we are and it is nice to have a little lime light now.


Friday, November 18, 2005 4:00:49 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Sunday, November 06, 2005
Thursday, July 07, 2005

Does anybody know if “Allow network (Ethernet) and Remote Access Service (RAS) server connection with desktop computer“ is gone forever or on a temporary hiatus? It seems that the developer preview of ActiveSync 4.0 should *really* have the feature since it is so useful for developers. Am I missing something?


Thursday, July 07, 2005 5:39:13 PM (Eastern Standard Time, UTC-05:00)  #    Comments [3]  |  Trackback
Monday, January 03, 2005
Intel Optimizing Center - Mobile Technologies
Monday, January 03, 2005 7:51:03 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Thursday, July 08, 2004
MSMobiles.com has WM2003 MPx200 ROM
Thursday, July 08, 2004 7:59:16 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  |  Trackback
Friday, June 18, 2004
DataSet Server CE: Database Connectivity for Windows Mobile-Based Devices
Friday, June 18, 2004 2:44:40 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Friday, May 07, 2004
70, Count them, 70 new developer resources on Windows Mobile!
Friday, May 07, 2004 10:37:33 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Friday, March 26, 2004
Visual Studio 2005 Tech Preview on MSDN
Friday, March 26, 2004 8:37:38 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Sunday, March 21, 2004
The Black Art of Using ActiveSync with the Emulator. [More...]
Sunday, March 21, 2004 1:43:56 PM (Eastern Standard Time, UTC-05:00)  #    Comments [5]  |  Trackback
Tuesday, March 16, 2004
LScript Development Tool Update...
Tuesday, March 16, 2004 2:25:33 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Monday, February 16, 2004
OpenNetCF Smart Device Framework released!
Monday, February 16, 2004 7:51:43 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  |  Trackback
Monday, December 22, 2003

A very exhaustive listing of mpx200 FAQ's.

https://hk-motoserviceone.motorola.com/en/motorola/User/SMPhone.jsp


Monday, December 22, 2003 8:12:24 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Friday, December 19, 2003

.NET Framework 1.1: Device Update 4.0

The Microsoft® .NET Framework version 1.1 includes ASP.NET Mobile Controls that enable developers to easily create mobile Web applications. Developers can write and maintain a single application that targets multiple devices.

http://www.microsoft.com/downloads/details.aspx?familyid=02fa15fe-40d9-4dce-9bb1-4dd61a5b7ccb&displaylang=en


Friday, December 19, 2003 2:55:18 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Thursday, December 11, 2003

http://www.microsoft.com/downloads/details.aspx?familyid=1be1eb52-aa96-4685-99a5-4256737781c5&displaylang=en

WTL 7.1 supports building GUI ATL applications uisng Visual Studio 6, 2002
and 2003 as well as eVC3.0 and eVC 4.0 targeting Win32 (Windows 2000,
Windows XP, Windows 2003) and Windows CE 3.0 and up including Smartphone
2002 and 2003. It supplies app wizards for all 5 dev environments listed
above.

The support for Windows CE was not designed to port projects for the desktop
version of Windows as-is to the Windows CE platforms, but to allow use of
the same library, WTL, for both desktop Windows and Windows CE. Applications
for Windows CE are often designed in a different way, and they use different
platform services. WTL depends on the version of ATL provided with each
Windows CE platform, and supports controls and services that are appropriate
and supported for each Windows CE platform.

I think Chris Tacke said it best, "Sweeeeeeeet."


Thursday, December 11, 2003 3:06:11 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Sunday, November 30, 2003

It has been asked whether it is a good idea to use eVB on SmartPhone 2002, now that John Cody has found a way to do so.

The main problem is the SmartPhone 2002 SDK cannot work after applying the current set of registry hacks required to make eVB IDE list SmartPhone 2002 as a valid platform to compile to.  This is simply caused by using the SmartPhone 2002 GUID and editing its information instead of generating a new one and adding it to the Platform Manger's list.  There may be more to it, but from what I saw that was the cause of this issue.

The next issue is having to install the eVB runtime files on the SmartPhone in order for a eVB application to run.  This is only marginally different that having to install the eVB runtime files on a Pocket PC 2003 device.  It is not ideal, but I think most people could deal with it if it increased developer support by even 50%.  And it has the potential to bring the hobbyist programmer to the platform.

There are bigger questions to ask.  Does eVB play nice with the SmartPhone OS?  Out of the box the SmartPhone OS only uses .1% of the CPU.  This is why the battery lasts as long as it does.  How much CPU do eVB applications use?  Are they CPU hogs, and thereby battery hogs?  I expect it'll have more to do with the applications written than with the eVB runtime.

The SmartPhone 2002 main problem is that it came to early for .NET Compact Framework, and too late for eVB.  So it only option is eVC which has an extremely limited amount of community support, especially with the SmartPhone platform specifics.

If the community takes up SmartPhone eVB applications then this will be a boon to the SmartPhone 2002 OS.  If not then it really is not any worse off that it already is.  For its first 24 hours, I'm happy with its potential and wish it the best.


Sunday, November 30, 2003 1:33:04 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  |  Trackback
Totally Tic Tac Toe has arrived
Sunday, November 30, 2003 2:35:41 AM (Eastern Standard Time, UTC-05:00)  #    Comments [1]  |  Trackback
Saturday, November 29, 2003
Thought you couldn't use eVB to develop Smartphone 2002 applications? Think again!
Saturday, November 29, 2003 6:13:09 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback

If you want to have a step-by-step tutorial walking you through some of the best stuff then you will want to see these hands on labs from this years PDC.

http://www.only4gurus.com/v2/holmobility.asp


Saturday, November 29, 2003 12:46:17 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Thursday, November 20, 2003
Configuration Manager and Configuration Service Providers
Thursday, November 20, 2003 3:12:06 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback
Wednesday, November 19, 2003

Microsoft has just release a new support site for Windows Mobile.  This is a very nice site with lots or tutorials and FAQ's.  There are many walkthroughs that show how to do something with step-by-step instructions and screenshots.  Check it out!

http://www.microsoft.com/windowsmobile/resources/support/default.aspx


Wednesday, November 19, 2003 3:07:47 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]  |  Trackback

Theme design by Jelle Druyts

Pick a theme: