If you are not (up to now) a part of the mobile world, we need to discuss some things before we start analyzing the devices and before we do any coding. I know you want to start coding right now, but believe me that your project will be more successful if you know the environment.
I know what you’re thinking: “you’re going to talk me about the small screen problems.” Yes, I was going to start with that. A mobile device has a very small screen compared with a desktop. While in desktop development we talk about 17-, 19-, and 21-inch screen sizes (diagonally), in mobile development we talk about 1.5, 2.3, or 3 inches. It’s really a big difference. Similarly, while in desktop development we talk about 1024×768 pixel resolution, in mobile development we talk about a quarter or half of that.
Resolution is the primary concern in mobile design. How many pixels (width and height) are available on a given device? This was the only portability problem for many years in the area of mobile development.
There are no mobile device standards regarding screen resolution. One device may have a resolution of 128×128 pixels, and another 800×600. But if we talk about devices sold from 2007, we can separate most of them into four basic groups:
Touch devices typically have a higher resolution than devices with a keyboard because no space needs to be reserved for the keypad.
Today, the most widely available screen resolution is 240×320 pixels. This is also known as QVGA (Quarter VGA), because the 1990s VGA standard was 640×480 pixels. An iPhone 3GS, for example, has a resolution of 320×480 pixels; this is known as HVGA (Half VGA).
There are also still a lot of devices with custom resolutions. Web technologies will simplify this problem for us, as we’ll see later in this book.
The resolution isn’t the only thing we can talk about with regard to a mobile device’s screen. One feature as important as the resolution is the physical dimensions of the screen (in inches or centimeters, diagonally or measured as width/height), or the relation between this measure and the resolution, which is known as the PPI (pixels per inch) or DPI (dots per inch). This is very important, because while our first thought may be that a screen with a resolution of 128×160 is “smaller” than a screen with a resolution of 240×320, that may be a false conclusion.
One of the phones I owned back in 2006, thanks to a gift from Nokia, was an N90. The device was like a brick, but the great (or not so great, as it turned out) feature was its resolution: 352×416. The problem was that the screen size was very similar to those of other devices on the market at the time that used resolutions like 176×208. Therefore, I couldn’t use any game or application on the device, or browse the Web; I needed a magnifier to see the normal font size. Every programmer thought that more available pixels meant a bigger screen, so why bother increasing the font? “Let’s use the extra space to fit more elements,” everyone thought. Wrong.
In June 2010, Apple presented iPhone 4, the first device with a “retina display,” that is a display with 326 pixels per inch (ppi). The human retina has a limit of 300 ppi at a certain distance, so this device with 960×640 in landscape mode has more pixels per inch that the ones we can really see. This is perfect for images and zoom-out viewing, but remember that we need to zoom in or have large fonts to perfectly read text.
The Nokia N90 has a display size of 1.36″ × 1.6″ (3.45 cm × 4.07 cm) = 259 PPI (or 0.0979 mm dot pitch), in comparison with other devices with a similar screen size, which have between 130 and 180 PPI.
You can find an online PPI and DPI calculator at http://members.ping.de/~sven/dpi.html.
A device’s aspect ratio refers to the ratio between its longer and shorter dimensions. There are vertical (or portrait) devices whose displays are taller than they are wide, there are horizontal (or landscape) devices whose displays are wider than they are tall, and there are also some square screens, as shown in Figure 1-4. To complicate our lives as programmers even more, today there are also many devices with rotation capabilities. Such a device can be either 320×240 or 240×320, depending on the orientation. Our websites need to be aware of this and offer a good experience in both orientations.
Alphanumeric keypad (ABC or QWERTY)
Virtual keypad on screen
External keypad (wireless or not)
And of course any possible combination of these, like a touch device with an optional onscreen keyboard and also a full QWERTY physical keyboard (see Figure 1-5).
Figure 1-5. The Nokia N97 mini has a full slider QWERTY keyboard and, when closed, an onscreen touch keyboard.
If you are thinking that QWERTY sounds like a Star Trek Klingon’s word, go now to your keyboard and look at the first line of letters below the numbers. That’s the reason for the name; it’s a keyboard layout organized for the smoothest typing in the English language that was created in 1874. This layout is preserved in many onscreen keyboards (see Figure 1-6).
We could talk for hours about mobile device features, but we’ll focus on the ones that are useful for us as mobile web programmers. Key features include:
Yes, mobile devices also make phone calls!
Most devices allow you to create text messages to send to other devices or to a server, with a length of up to 160 7-bit ASCII characters (or 140 8-bit ASCII characters, or 70 Unicode chars), or to concatenate many messages for a larger text.