Hardware Awareness

Mobile PCs come in a variety of form factors. Great mobile applications are aware of the hardware and present the best user interface for the current configuration.

Mobile PC Hardware

More than other classes of computers, mobile PCs are exposed to rapidly changing hardware conditions. Hardware devices can be plugged or unplugged in a variety of ways: peripherals using one of the many connecting technologies, such as CardBus, USB, Bluetooth or Firewire; mobile PCs are often docked or undocked from one or mode docking stations that often have attached peripherals; external monitors through a dedicated external connector; and shared or network attached peripherals that can change as network connectivity does. And as mentioned above, a device can also be powered down, which delays access to its functionality. A robust application will intelligently handle device transitions.

Before accessing any output device, an application should first query its current availability and state. If it is currently powered down, the application should consider whether the operation is non-essential (and therefore can be skipped), whether it can be delayed, or whether an alternate resource can be substituted instead. If none of these alternatives can be used, only then should the device be directly accessed (resulting in it automatically powering up). Likewise, if a device is not available, these same alternatives can be considered before running error logic. An application can also take a more proactive stance by monitoring for hardware changes.

Monitor Awareness

Monitor displays are a particularly complicated area for applications to handle gracefully. The trend in desktop monitors is either larger, higher-DPI (perhaps widescreen) monitors or using multiple monitors on a single PC. In contrast, monitor use is more varied for mobile PCs – while desktop replacement notebooks often have fairly large, widescreen displays, the new ultra-mobile PCs (UMPCs) typically have tiny built-in displays. External monitors or projectors are a further complication. Developers should consider the following monitor variables when designing application UI:

  • The wide possible diversity of screen sizes and resolutions, for example, ranging from large 1,920x1,200 pixel widescreen LCD monitors to small built-in 800x480 UMPC displays.
  • Varying pixel density, commonly measured in dots per inch (DPI). While 96 DPI is the de facto standard today, Windows Vista is designed to better handle higher density displays, like 120 DPI.
  • Transitions between landscape and portrait orientation.
  • The connection and disconnection of external monitors (or projectors).
  • The efficient use of multiple monitors or multiple virtual desktops.

As with hardware awareness, an application can determine and adapt to the current monitor environment. In addition, it should monitor and respond to monitor and display changes. For more information, see "Adapting to a Flexible Display Environment" in the the Mobile PC User Experience Guidelines for Developers.

Digitizer Awareness

Many mobile PCs have digitizers embedded in the displays, enabling them with the power to exploit the Tablet PC platform features such as digital ink, handwriting recognition, and ink analysis.

For detailed information on how to create an application that is Tablet PC enabled, see the Tablet PC Development Guide.

Windows SideShow

Microsoft Windows SideShow is a new feature for Windows Vista. The Windows SideShow platform enables developers to create new applications and extend existing applications specifically for devices with small displays and limited interaction models. Applications designed to interact with the platform are known as gadgets. The devices supported by the platform include, but are not limited to, embedded laptop lid displays, front panel computer displays, cell phones, and other network-connected display devices.

Related Topics

Mobile PC User Experience Guidelines for Developers
Tablet PC Development Guide
Windows SideShow



Send comments about this topic to Microsoft

Build date: 2/8/2011