Showing posts with label hci. Show all posts
Showing posts with label hci. Show all posts

Friday, October 10, 2008

Windows Mobile Phone Factors

So how does one go about designing great software when the underlying tools leave much to be desired?

Don't worry, it was a rhetorical question.

Recently, I have been working on Friend Forecaster and its corresponding Windows Mobile software, aptly names, Friend Forecaster Mobile. Friend Forecaster will receive a proper introduction in due time, but essentially Friend Forecaster is a context aware application that tells you who you might see from your social network based on your location. What makes the project unique is that we are designing this software for senior citizens with Mild Cognitive Impairment, therefore our designs need to accommodate a typically older adult than most current cell phone applications.

As I have mentioned in previous posts, Window Mobile developers are blessed with a great set of tools from Microsoft. Microsoft Visual Studio makes so many things very easy and makes other things really hard. For example:

Easy
  • Making a user interface without writing lots of layout code
  • Deploying your application to different platforms
  • Refactoring
  • etc...
However, Windows Mobile itself makes some things very hard.

Hard
  • Making an interface for someone who has never used a cell phone.
  • Dealing with accessibility concerns
  • Easily skinning buttons or other UI elements to make them look more custom.
  • etc.
My list is by no means exhaustive, but in my opinion it's right on track with Microsoft's Pre-Vista mentality. Make it work! We'll worry about how it looks later.

This is all well and good since Windows Mobile is primary designed and used by the business world, but when you are trying to think outside the box, Microsoft seems to want to shove you back in.

Take for example their default menu bar at the bottom of each screen.







Look how small it is!

It is very hard tapping these buttons without using a stylus! You eventually get it and you learn how to manipulate your finger to do it, but this is basic interaction we are talking about.


So what can we do about it?

Well, there are a few options. You can go to places like Codeplex or Code Project and try to find some custom controls that do the job for you. The disadvantage with this is that using custom controls that you didn't write or that you don't understand is not advised.

A simpler option is to remove the default MenuBar control that gets generated for you, and replace it with your own. You can then make your own custom control or you can copy over the code for each form. Its best to keep your code as DRY as possible so creating a custom control is the best way to go.

Basically, all you have to do is increase the height of the MenuBar. The default size is around 10-15px depending on what brand of Windows Mobile you are using.

I have done user testing with a variety of users and it looks like the magic size is 30-35px. I haven't formalized a click test because I don't think its really necessary at this point, but a good heuristic should be to make those bottom buttons between 30-35px high.

One final heuristic is to make sure you use ALL of the space at the bottom of the screen. As you can see, I decided to make Friend Forecaster a full screen application which means it doesn't have a top NavigationBar, I did this to maximize screen space and also because our use cases don't need that kind of functionality. However, as soon as you add a visual element that occupies a fixed height, like a button... make sure you use all available height!

By default Windows Mobile will let you have one MenuBar button on either side while leaving the other side blank! Why would you do this! Use the entire space! If you only have one button, then make it fill the length of the screen!

I know what you must be thinking... Kent, all of this breaks the Soft Key interaction technique. You are right... it does. But we are living in a Touch Based world, and the need for Soft Keys is decreasing. It's very easy to map the functions of the Soft Keys to the bigger buttons, but in my experience there is no need.

Anyway, I hope this helps future Windows Mobile 6 software designers some time since users will bring this issue up within a week of testing. Let's hope that Microsoft delivers on their Windows Mobile 7 promises, and maybe we will never have to worry about this again.

The ball is in their court. Until then, the iPhone and Android will continue to eat away its precious market share.

Thank you

Tuesday, September 16, 2008

I Can't Touch Windows Mobile

I have been using Windows Mobile for about six months now and have finally gotten to the point where I need to start talking about some of its shortcomings. All in all, I do not regret using it since it has been very easy to prototype with but having looked at all of its competitors save maybe Symbian, I can't help but feel that they will be in trouble if they do not make significant changes in the coming years.

One of Windows Mobile's biggest shortcomings, is the lack of a Touch Screen API. While some might disagree with me on this, there is NO easy way to handle touch screen input in Windows Mobile 5 or 6. Having explored this topic quite a bit, I have found that most ways of dealing with touch normally rely on creating custom form controls that use some button hacks to listen for a touch and drag operation. I understand that when this platform was released the number of touch devices were limited, however, in this market they are not. In fact, windows mobile had by far the largest number of touch screen phones yet gives developers no easy way of using utilizing them.

A lot of this comes from the fact that Microsoft seems to want developers using the new Managed C# frameworks rather than the Native C++ frameworks. I thank them for this! Writing Visual C++ is hard enough on the desktop and gets worse on the device when memory is such an issue, however, some key features are not included in the Managed Libraries, such as a Touch API.

Needless to say this will be addressed when Microsoft unveils their new Touch Framework for devices and for Windows Forms, but they might loose some developers like me in the process. Apple and Google have very nice Touch APIs for their mobile devices and its obvious given the amazing applications people are writing for them. It's funny how Google still has the killer app for Windows Mobile... Google Maps Mobile. It really utilizes the touch screen, but like many amazing Windows Mobile Apps is completely written in C++.

Maybe this is Microsoft's way of getting serious developers into programming for Windows Mobile by only showing off these advanced features for skilled C++ developers, but why are pushing this C# thing so hard then. I would love for someone to correct me and give me a great solution that doesn't involve me going over to the codeproject and downloading some half baked control.

I Love you for so many things Windows Mobile, but wish you were a bit taller!

Kent