Friday, April 13, 2007

Announcing Roam

Roam is a .NET CF 2 open source library for Windows Mobile devices that I've been developing off and on for the past year or so. A majority of the development has been driven off my own needs as a SmartPhone developer and HCI researcher. Although the source code is hosted on SourceForge and released under the BSD license (link), I have not had a chance to write a webpage or formal documentation. Thus, I've held off on advertising it on newsgroups/forums. I thought I would mention it here because I believe the source code could be of some use to my readers. Note that Roam requires OpenNETCF's Smart Device Framework (SDF 2.0) library. They just recently released SDF 2.1, I'm not sure if Roam is compatible or not...

Currently, the Roam library is broken down into four namespaces: Roam, Roam.Common, Roam.SqlCe, and Roam.UI. Each of these namespaces are compiled into their own assembly to save space.
  1. Roam: contains media related functionality (e.g., sound player, camera media sniffer), pocket outlook related code (e.g., semi-robust SMS sending system), and low level device related utility classes (e.g., power notifications, storage card utilities, device id)

  2. Roam.Common: contains code that is not-specific to Windows Mobile (i.e., this .dll also runs on the desktop). The largest subnamespace in this library is the Collections classes which include a HashSet, a Tree, a PriorityQueue, and a ReadOnlyHashtable among other things.

  3. Roam.SqlCe: contains code relevant to SQL Server Mobile / Compact Edition. Currently, only two classes exist: SqlCeConnectionManager which offers thread safe connection pooling using a singleton paradigm and SqlCeWrapper which also offers thread safe access to the database by wrapping the SqlCeConnection object.

  4. Roam.UI: this is the largest assembly in the Roam project. It contains many of the UI controls I've needed over the past year and were not included in .NET CF (e.g., scrollable label) I've developed a fairly simple drawing architecture that many of my custom UI classes use. Currently, Roam.UI contains custom controls for image buttons, radio list boxes, check box lists, key filtered lists, numeric text boxes and scrollable labels. In addition, Roam.UI features a set of utility classes that wrap P/Invoke calls to draw rounded rectangles, change the device's wallpaper, etc.
Below are two brief demos of Roam.UI custom controls: the TextBoxFilteredList and the ScrollableLabel. Note that the embedded videos below are hosted on YouTube which changes the aspect ratio and overall quality. :( The original source videos can be found here and here.





Wednesday, April 04, 2007

Deprecated Features In Windows Mobile 6

Channel9 Wiki has a list of deprecated API features in WM 6 that should no longer be used.

(link)

Windows Mobile Platform Growth

A Microsoft developer posted about why he loves to work on Windows Mobile on the Windows Mobile Team Blog. In it he details the massive growth the Windows Mobile platform has experienced in the past few years:

I’ve talked a lot about not understanding marketers. It’s even harder to understand accountants (even though I’m married to one…). For some reason, our accountants think that the “year” starts in July and ends in June. Well, in the first half of this “year” (in the accounting sense), we sold over five million phone units. Last “year” we sold 150% more units than the year before. And in that year we sold 150% more units than the one before it. Weird accounting speak aside, we’ve been growing at 150% for a couple of years now. That’s easy to do if you’re small. But we’re not small. Exciting times.

(link)

SMS Toolkit

A colleague pointed me to MSR India's SMS Toolkit. I haven't had a chance to check it out but it looks very cool.