Smartphones, by now, have entered our lives not only as users and consumers but also as
producers of our own content. Though this kind of device has been on the market since 1992
(the irst was the Simon model by IBM), the big diffusion was driven by Apple's iPhone, when it
was produced in 2007 (this year, the ifth generation of this device has been released).
Meanwhile, another big giant, Google, developed an open source product to be used as the
internal operating system in mobile devices; in a different manner from the leader of the
market, this company doesn't constraint itself to a unique hardware-speciic device, but allows
third-party companies to use it on their cell phones, which have different characteristics. The
big advantage was also to be able to sell this device to consumers that don't want to (or can't
have) spend as much money as the Apple phone costs. This allowed Android to win the battle
of diffusion.
But there is another side to the coin. A variety of devices by different producers means more
fragmentation of the underlying system and a non-uniform user experience that can be really
disappointing. As programmers, we have to take into account these problems and this book
strives to be a useful guideline to solve that problem.