Preface |
Mobile device users experience their environments through a variety of computing screens. The devices most often used are computers, tablets, and phones. Users today increasingly expect a connected and highly personalized experience that is seamless across all connected devices, including television, home automation gadgets, wearable computers, and cars. Android is the operating system that powers many of these connected devices. As of early 2015, Android is the largest installed base of any mobile platform.
Initially created by Android Inc. by a team led by Andy Rubin, the Android operating system was acquired by Google in 2005. The first commercial version of Android was released in 2008 on an HTC phone named Dream; also known as the T-Mobile G1. Since its initial release, the operating system has undergone an extreme metamorphosis, evolving quickly and frequently, with new and updated versions released at an unprecedented rate.
As a Linux-based system, Android is run as an open source project; this means that anyone can adapt the code for his or her own purposes. This permissive model makes Android unique in that it allows companies and developers to modify and distribute the software freely. Device manufacturers creating phones and tablets often customize the Android operating system to the specific needs of their particular mobile devices.
In this text, readers will learn how to design and implement applications that will run on a variety of Android-driven devices. Building sophisticated applications that are optimized, responsive, and able to perform complex interactions at fast speeds requires patience, skill, and practice. The concepts and techniques you will learn in this text will provide you with the building blocks needed to master the art of mobile programming.
Text Objectives
This text was conceived with two types of individuals in mind: programming students and professional software developers who wish to broaden their expertise. It is essential that readers know how to program in an OOP language, preferably Java, before using this text. For non-Java programmers, familiarization with the Java API is recommended.
This text is intended as a textbook, not as a tutorial. We have designed the text, using an easy-to-understand and straightforward approach, to integrate key concepts relating to application development that students see daily on Android devices. Each chapter presents Android concepts and methodologies with complete abbreviated application examples that are relevant to current platforms.
How to Use This Text
The first three chapters provide an introduction to the foundation of application development. Chapter 1 incorporates two step-by-step tutorials to help readers get started in creating basic applications. Chapters 2 and 3 provide key core concepts for building well-designed applications. It is important that readers are comfortable with these early chapters before proceeding.
After reading the first three chapters, Chapters 4 through 9 do not need to be read in sequential order. Readers wishing to acquire the most invaluable concepts first should start with Chapter 4 and proceed to Chapters 7, 8, and 9; however, multithreading concepts (discussed in Chapter 6) are a prerequisite for the last three chapters. A detailed reading of Chapter 5 is not required for Chapter 6.
Instructor and Student Resource Material
The following ancillary materials are available on the text website:
go.jblearning.com/CornezAndroid
Source code files for lab examples
Instructor’s Manual containing solutions to end-of-chapter exercises
Lecture Slides in PowerPoint format
Test bank
Acknowledgments
We have received invaluable support from friends, students, and colleagues in the preparation of the text. The University of Redlands has provided the resources and means for us to complete the project. Jones & Bartlett Learning offered an excellent team of professionals who handled the book from manuscript to final production. We especially want to thank Laura Pagluica, Taylor Ferracane, Sara Kelly, and Abby Reip.
We are thankful to Jordan Vega and Sam Marrs for many useful suggestions. We are indebted to Jim Bentley and Pani Chakrapani for giving us the opportunity to schedule several mobile programming classes that allowed us to classroom-test portions of our text. Jim Bentley was kind enough to offer department funds for devices for some of our students, who might not otherwise have been able to participate.
We would like to thank the following reviewers, who offered us indispensable pedagogical and content guidance for revision:
Sonia Arteaga
Hartnell College
Jeremy Blum, DSc
Associate Professor of Computer Science
Penn State Harrisburg
Georgia Brown, MS
Instructor
Northern Illinois University
George Dudas
Instructor in Computer Science and Software Engineering
Penn State Erie, The Behrend College
Shane Schartz
Informatics
Fort Hays State University
Robert Steinhoff, PhD
Florida Memorial University
Michael Ziray
Boise State University
Last but not least, thanks to our many students whose struggles, challenges, and successes gave us all the evidence we needed to improve the text.