Android cho người mới bắt đầu
this print for content only—size & color not accurate spine = 0.885" 384 page count Books for professionals By professionals ® Beginning Android Dear Reader, First, welcome to the world of Android! We’re entering a new era of mobile application development, one marked by open platforms and open source, to take ‘walled gardens’ and make them green houses for any and all to participate in. Android is relatively easy for developers, and I believe that this innovation will help generate a large ecosystem of developers and consumers within a very short time. This means that budding developers such as yourself will have many opportunities to design and build your own applications and you’ll have a huge and hungry customer base. Second, welcome to the book! Its purpose is to start you on your way with building Android applications, and to help you master the learning curve. Android is already a rich framework, comparable in many ways to the richness of desktop Java environments. This means that there is a lot of cool stuff for you to pick up along your journey in order to create the slickest, most useful apps you can imagine. The source code for the code samples in this book is all available from the Apress site, so you can stay as hands-on and practical as you like while I intro- duce you to the core of Android, and invite you to experiment with the various classes and APIs we’ll be looking at. By the time you’ve finished this book, you’ll be creating your own Android applications and asking yourself what your next great application will be .! Enjoy! Mark Murphy US $44.99 Shelve in Mobile Computing User level: Beginner–Intermediate Murphy Beginning Android The eXperT’s Voice ® in open source Beginning Android cyan MaGenTa yelloW Black panTone 123 c Mark L. Murphy Companion eBook Available www.apress.com SOURCE CODE ONLINE Companion eBook See last page for details on $10 eBook version Master Android from first principles and begin the journey toward your own successful Android applications! ISBN 978-1-4302-2419-8 9 781430 224198 5 4 4 9 9 Beginning Android ■■■ Mark L. Murphy Murphy_2419-8FRONT.fm Page i Friday, May 29, 2009 1:33 PM Beginning Android Copyright © 2009 by Mark L. Murphy All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN-13 (pbk): 978-1-4302-2419-8 ISBN-13 (electronic): 978-1-4302-2420-4 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Java™ and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc., in the US and other countries. Apress, Inc., is not affiliated with Sun Microsystems, Inc., and this book was written without endorsement from Sun Microsystems, Inc. Lead Editor: Matthew Moodie Editorial Board: Clay Andres, Steve Anglin, Mark Beckner, Ewan Buckingham, Tony Campbell, Gary Cornell, Jonathan Gennick, Michelle Lowman, Matthew Moodie, Duncan Parkes, Jeffrey Pepper, Douglas Pundick, Frank Pohlmann, Ben Renow-Clarke, Dominic Shakeshaft, Matt Wade, Tom Welsh Project Manager: Douglas Sulenta Copy Editors: Candace English and Katie Stence Associate Production Director: Kari Brooks-Copony Production Editor: Ellie Fountain Compositor: Susan Glinert Proofreader: Lisa Hamilton Indexer: BIM Indexing & Proofreading Services Cover Designer: Kurt Krames Manufacturing Director: Tom Debolski Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail orders-ny@springer-sbm.com, or visit http://www.springeronline.com. For information on translations, please contact Apress directly at 2855 Telegraph Avenue, Suite 600, Berkeley, CA 94705. Phone 510-549-5930, fax 510-549-5939, e-mail info@apress.com, or visit http:// www.apress.com. Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Special Bulk Sales–eBook Licensing web page at http://www.apress.com/info/bulksales. The information in this book is distributed on an “as is” basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. The source code for this book is available to readers at http://www.apress.com. Murphy_2419-8FRONT.fm Page ii Friday, May 29, 2009 1:33 PM Murphy_2419-8FRONT.fm Page iii Friday, May 29, 2009 1:33 PM iv Contents at a Glance About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi PART 1 ■ ■ ■ Core Concepts ■ CHAPTER 1 The Big Picture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ■ CHAPTER 2 Project Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 ■ CHAPTER 3 Inside the Manifest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 PART 2 ■ ■ ■ Activities ■ CHAPTER 4 Creating a Skeleton Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 ■ CHAPTER 5 Using XML-Based Layouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 ■ CHAPTER 6 Employing Basic Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 ■ CHAPTER 7 Working with Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 ■ CHAPTER 8 Using Selection Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 ■ CHAPTER 9 Getting Fancy with Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 ■ CHAPTER 10 Employing Fancy Widgets and Containers . . . . . . . . . . . . . . . . . . . . . 93 ■ CHAPTER 11 Applying Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 ■ CHAPTER 12 Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 ■ CHAPTER 13 Embedding the WebKit Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 ■ CHAPTER 14 Showing Pop-Up Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 ■ CHAPTER 15 Dealing with Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 ■ CHAPTER 16 Handling Activity Lifecycle Events . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Murphy_2419-8FRONT.fm Page iv Friday, May 29, 2009 1:33 PM v PART 3 ■ ■ ■ Data Stores, Network Services, and APIs ■ CHAPTER 17 Using Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 ■ CHAPTER 18 Accessing Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 ■ CHAPTER 19 Working with Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 ■ CHAPTER 20 Managing and Accessing Local Databases . . . . . . . . . . . . . . . . . . . 193 ■ CHAPTER 21 Leveraging Java Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 ■ CHAPTER 22 Communicating via the Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 PART 4 ■ ■ ■ Intents ■ CHAPTER 23 Creating Intent Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 ■ CHAPTER 24 Launching Activities and Sub-Activities . . . . . . . . . . . . . . . . . . . . . . 221 ■ CHAPTER 25 Finding Available Actions via Introspection . . . . . . . . . . . . . . . . . . . 231 ■ CHAPTER 26 Handling Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 PART 5 ■ ■ ■ Content Providers and Services ■ CHAPTER 27 Using a Content Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 ■ CHAPTER 28 Building a Content Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 ■ CHAPTER 29 Requesting and Requiring Permissions . . . . . . . . . . . . . . . . . . . . . . 269 ■ CHAPTER 30 Creating a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 ■ CHAPTER 31 Invoking a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 ■ CHAPTER 32 Alerting Users via Notifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Murphy_2419-8FRONT.fm Page v Friday, May 29, 2009 1:33 PM vi PART 6 ■ ■ ■ Other Android Capabilities ■ CHAPTER 33 Accessing Location-Based Services . . . . . . . . . . . . . . . . . . . . . . . . . 293 ■ CHAPTER 34 Mapping with MapView and MapActivity . . . . . . . . . . . . . . . . . . . . . 299 ■ CHAPTER 35 Handling Telephone Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 ■ CHAPTER 36 Searching with SearchManager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 ■ CHAPTER 37 Development Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 ■ CHAPTER 38 Where Do We Go from Here? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 ■ APPENDIX Introducing Android 1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 ■ INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Murphy_2419-8FRONT.fm Page vi Friday, May 29, 2009 1:33 PM vii Contents About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi PART 1 ■ ■ ■ Core Concepts ■ CHAPTER 1 The Big Picture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 What Androids Are Made Of . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Activities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Content Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Intents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Stuff at Your Disposal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Multimedia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 GPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Phone Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 ■ CHAPTER 2 Project Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Root Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 The Sweat of Your Brow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 The Rest of the Story . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 What You Get Out of It . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 ■ CHAPTER 3 Inside the Manifest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 In the Beginning There Was the Root, and It Was Good . . . . . . . . . . . . . . . 9 Permissions, Instrumentations, and Applications (Oh, My!) . . . . . . . . . . . 10 Your Application Does Something, Right? . . . . . . . . . . . . . . . . . . . . . . . . . 10 Achieving the Minimum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Murphy_2419-8FRONT.fm Page vii Friday, May 29, 2009 1:33 PM viii ■ CONTENTS PART 2 ■ ■ ■ Activities ■ CHAPTER 4 Creating a Skeleton Application . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Begin at the Beginning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 The Activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Dissecting the Activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Building and Running the Activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 ■ CHAPTER 5 Using XML-Based Layouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 What Is an XML-Based Layout? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Why Use XML-Based Layouts? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 OK, So What Does It Look Like? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 What’s with the @ Signs? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 We Attach These to the Java . . . How? . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 The Rest of the Story . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 ■ CHAPTER 6 Employing Basic Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Assigning Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Button, Button, Who’s Got the Button? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Fleeting Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Fields of Green. Or Other Colors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Just Another Box to Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Turn the Radio Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 It’s Quite a View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Useful Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Useful Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ■ CHAPTER 7 Working with Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Thinking Linearly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Concepts and Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Orientation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 LinearLayout Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 All Things Are Relative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Concepts and Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 RelativeLayout Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Murphy_2419-8FRONT.fm Page viii Friday, May 29, 2009 1:33 PM . Books for professionals By professionals ® Beginning Android Dear Reader, First, welcome to the world of Android! We’re entering a new era of mobile application. purpose is to start you on your way with building Android applications, and to help you master the learning curve. Android is already a rich framework, comparable