Company Blog

The latest on company stories, news, and highlights.

Designing and Developing Scan for Windows Phone 7

by: Dustin Kendall. Posted: April 18, 2012.

Scan for Android Icon

During the design phase of the Scan app for Windows Phone 7, much thought was put into how to make the user experience unique yet true to the Windows Phone 7 platform, while maintaining consistency with the iOS and Android versions of the app.

In a Windows Phone 7 app, there are two common ways to present users with the information of your app: the Pivot and Panorama controls. The Pivot control allows you to divide your app into slices of related data that the user can navigate through. Each ‘view’ contains header text to identify it. From the current view, the user is shown portions of the header text of adjacent views, indicating to them that they can tap or swipe to get to these views. The Panorama control is essentially a long horizontal canvas that extends beyond the confines of the screen. This control is typically used to encourage users to explore content in a non-task-directed way, or for more data-dense information hubs like allowing them to search for a specific contact or play a game.

In deciding which control to use, we thought long and hard about which would fit our needs better. We felt the Pivot control would help us best to achieve this goal. Using this control would allow us to give each of the main components its own view for the user to interact in. We debated whether to use icons at the bottom of each pivot view instead of the header text, but decided that doing so would stray too far from the intent of the Pivot control itself and in turn from the Windows Phone 7 platform as well, so we kept the header text. The Pivot control has worked out just as we expected.

Continuous integration is an important part of our development process and we wanted to apply CI principles from the get-go. Surprisingly, there isn’t a unit testing framework from Windows Phone 7 out of the box. After trying various options including NUnit for Windows Phone, NUnit Silverlight, and the Silverlight Unit Test Framework, we ended up using the Windows Phone 7 Continuous Integration Testing Framework. The biggest reason we chose this framework was due to its ability to run tests in the emulator from the command line, and it has served us well so far. It’s also provided as a NuGet package.

When developing a Windows Phone 7 app, you need to keep track of three main states: Running, Tombstoned, and Dormant. Running is self-explanatory, the app is currently active on the user’s screen. The Dormant state is reached when the user navigates away from the application. All application threads are stopped and no processing takes place, but the app stays in memory. What this means is that if the user comes back into the app, no state needs to be re-created, as it is still in memory. Once in this state, if new apps are launched on the phone and require more memory than is available to provide a good user experience, the app enters the Tombstoned state. Tombstoned means the application has been terminated, but the application’s state has been saved to the phone’s disk. Thus, when the user brings the app back to life, it remembers its state and picks up where the user left off.

The application lifecycle on Windows Phone 7 enables apps to launch quickly and efficiently in order to give customers a great user experience, which is one of our main goals while developing the Scan Windows Phone 7 app. Staying within the bounds the platform has specified has also helped us achieve that goal. Microsoft has great online resources that you can find here , here, and here that deal with how to accomplish this.

With all this in mind, we hope that the Scan for Windows Phone 7 can become the most user-friendly and intuitive QR code and barcode scanning app available on the Windows Phone Marketplace. Any feedback once it’s released is much appreciated!