Android Application Development
5LFN5RJHUV-RKQ/RPEDUGR=LJXUG0HGQLHNVDQG%ODNH
0HLNH
Beijing • Cambridge • Farnham • Kưln • Sebastopol • Taipei • Tokyo
Android Application Development
E\5LFN5RJHUV-RKQ/RPEDUGR=LJXUG0HGQLHNVDQG%ODNH0HLNH
&RS\ULJKW5LFN5RJHUV-RKQ/RPEDUGR=LJXUG0HGQLHNVDQG%ODNH0HLNH$OOULJKWVUHVHUYHG
3ULQWHGLQWKH8QLWHG6WDWHVRI$PHULFD
3XEOLVKHGE\2¦5HLOO\0HGLD,QF*UDYHQVWHLQ+LJKZD\1RUWK6HEDVWRSRO&$
2¦5HLOO\ERRNVPD\EHSXUFKDVHGIRUHGXFDWLRQDOEXVLQHVVRUVDOHVSURPRWLRQDOXVH2QOLQHHGLWLRQV
DUHDOVRDYDLODEOHIRUPRVWWLWOHVKWWSP\VDIDULERRNVRQOLQHFRP
)RUPRUHLQIRUPDWLRQFRQWDFWRXU
FRUSRUDWHLQVWLWXWLRQDOVDOHVGHSDUWPHQW
RUFRUSRUDWH#RUHLOO\FRP
Editor: $QG\2UDP
Production Editor: 6XPLWD0XNKHUML
Copyeditor: *HQHYLHYHG¦(QWUHPRQW
Proofreader: 6DGD3UHLVFK
Indexer: -RH:L]GD
Cover Designer: .DUHQ0RQWJRPHU\
Interior Designer: 'DYLG)XWDWR
Illustrator: 5REHUW5RPDQR
Printing History:
0D\
)LUVW(GLWLRQ
1XWVKHOO+DQGERRNWKH1XWVKHOO+DQGERRNORJRDQGWKH2¦5HLOO\ORJRDUHUHJLVWHUHGWUDGHPDUNVRI
2¦5HLOO\0HGLD,QF$QGURLG$SSOLFDWLRQ'HYHORSPHQWWKHLPDJHRIDQ(DVWHUQTXROODQGUHODWHGWUDGH
GUHVVDUHWUDGHPDUNVRI2¦5HLOO\0HGLD,QF
0DQ\RIWKHGHVLJQDWLRQVXVHGE\PDQXIDFWXUHUVDQGVHOOHUVWRGLVWLQJXLVKWKHLUSURGXFWVDUHFODLPHGDV
WUDGHPDUNV:KHUHWKRVHGHVLJQDWLRQVDSSHDULQWKLVERRNDQG2¦5HLOO\0HGLD,QFZDVDZDUHRID
WUDGHPDUNFODLPWKHGHVLJQDWLRQVKDYHEHHQSULQWHGLQFDSVRULQLWLDOFDSV
:KLOHHYHU\SUHFDXWLRQKDVEHHQWDNHQLQWKHSUHSDUDWLRQRIWKLVERRNWKHSXEOLVKHUDQGDXWKRUVDVVXPH
QRUHVSRQVLELOLW\IRUHUURUVRURPLVVLRQVRUIRUGDPDJHVUHVXOWLQJIURPWKHXVHRIWKHLQIRUPDWLRQFRQ
WDLQHGKHUHLQ
TM
7KLVERRNXVHV5HS.RYHUDGXUDEOHDQGIOH[LEOHOD\IODWELQGLQJ
,6%1
>0@
Table of Contents
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Part I. Development Kit Walk-Through
1. Getting to Know Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
:K\$QGURLG"
7KH2SHQ+DQGVHW$OOLDQFH
7KH$QGURLG([HFXWLRQ(QYLURQPHQW
&RPSRQHQWVRIDQ$QGURLG$SSOLFDWLRQ
$QGURLG$FWLYLW\/LIHF\FOH
$QGURLG6HUYLFH/LIHF\FOH
+RZ7KLV%RRN)LWV7RJHWKHU
2. Setting Up Your Android Development Environment . . . . . . . . . . . . . . . . . . . . . . . . . 13
6HWWLQJ8S
&UHDWLQJDQ$QGURLG'HYHORSPHQW(QYLURQPHQW
+HOOR$QGURLG
:KHUH:H¦UH*RLQJ
6WDUWLQJD1HZ$QGURLG$SSOLFDWLRQ+HOOR:RUOG
:ULWLQJ+HOOR:RUOG
5XQQLQJ+HOOR:RUOG
3. Using the Android Development Environment for Real Applications . . . . . . . . . . . . 27
0LFUR-REV7KLV%RRN¦V0DLQ6DPSOH$SSOLFDWLRQ
$QGURLGDQG6RFLDO1HWZRUNLQJ
'RZQORDGLQJWKH0-$QGURLG&RGH
$%ULHI7RXURIWKH0-$QGURLG&RGH
7KH3URMHFW5RRW)ROGHU0-$QGURLG
7KH6RXUFH)ROGHUVUF
7KH5HVRXUFH)ROGHUUHV
)LUVW6WHSV%XLOGLQJDQG5XQQLQJWKH0LFUR-REV$SSOLFDWLRQ
iii
$9HU\6KRUW7RXURIWKH$QGURLG6'.(FOLSVH,'(
/RDGLQJDQG6WDUWLQJWKH$SSOLFDWLRQ
'LJJLQJD/LWWOH'HHSHU:KDW&DQ*R:URQJ"
5XQQLQJDQ$SSOLFDWLRQRQWKH70RELOH3KRQH
6XPPDU\
4. Under the Covers: Startup Code and Resources in the MJAndroid Application . . . . 43
,QLWLDOL]DWLRQ3DUDPHWHUVLQ$QGURLG0DQLIHVW[PO
,QLWLDOL]DWLRQLQ0LFUR-REVMDYD
0RUH,QLWLDOL]DWLRQRI0LFUR-REVMDYD
6XPPDU\
5. Debugging Android Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7KH7RROV
(FOLSVH-DYD(GLWRU
-DYD(UURUV
7KH'HEXJJHU
/RJFDW
$QGURLG'HEXJ%ULGJHDGE
''06'DOYLN'HEXJ0RQLWRU6HUYLFH
7UDFHYLHZ
6XPPDU\
6. The ApiDemos Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
$SSOLFDWLRQ6HWXSLQWKH0DQLIHVW)LOH
)LQGLQJWKH6RXUFHWRDQ,QWHUHVWLQJ([DPSOH
&XVWRP7LWOH'HPR
/LQNLI\'HPR
$GGLQJ
7. Signing and Publishing Your Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
7HVW
$WWDFKDQ(QG8VHU/LFHQVH$JUHHPHQW,I'HVLUHG
&UHDWHDQG$WWDFKDQ,FRQDQG/DEHO
&OHDQ8SIRU5HOHDVH
9HUVLRQ
2EWDLQLQJD6LJQLQJ&HUWLILFDWHDQG$3,.H\
*HWWLQJD6LJQLQJ&HUWLILFDWHIRUDQ$SSOLFDWLRQ
*HWWLQJD6LJQLQJ&HUWLILFDWH:KLOH'HEXJJLQJ
6LJQLQJ
5HWHVWLQJ
3XEOLVKLQJRQ$QGURLG0DUNHW
6LJQLQJ8S$VDQ$QGURLG'HYHORSHU
iv | Table of Contents
8SORDGLQJ
Part II. Programming Topics
8. Persistent Data Storage: SQLite Databases and Content Providers . . . . . . . . . . . . . 101
'DWDEDVHV
%DVLF6WUXFWXUHRIWKH0LFUR-REV'DWDEDVH&ODVV
5HDGLQJ'DWDIURPWKH'DWDEDVH
0RGLI\LQJWKH'DWDEDVH
&RQWHQW3URYLGHUV
,QWURGXFLQJ1RWH3DG
&RQWHQW3URYLGHUV
&RQVXPLQJD&RQWHQW3URYLGHU
9. Location and Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
/RFDWLRQ%DVHG6HUYLFHV
0DSSLQJ
7KH*RRJOH0DSV$FWLYLW\
7KH0DS9LHZDQG0DS$FWLYLW\
:RUNLQJZLWK0DS9LHZV
0DS9LHZDQG0\/RFDWLRQ2YHUOD\,QLWLDOL]DWLRQ
3DXVLQJDQG5HVXPLQJD0DS$FWLYLW\
&RQWUROOLQJWKH0DSZLWK0HQX%XWWRQV
&RQWUROOLQJWKH0DSZLWKWKH.H\3DG
/RFDWLRQ:LWKRXW0DSV
7KH0DQLIHVWDQG/D\RXW)LOHV
&RQQHFWLQJWRD/RFDWLRQ3URYLGHUDQG*HWWLQJ/RFDWLRQ8SGDWHV
8SGDWLQJWKH(PXODWHG/RFDWLRQ
10. Building a View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
$QGURLG*8,$UFKLWHFWXUH
7KH0RGHO
7KH9LHZ
7KH&RQWUROOHU
3XWWLQJ,W7RJHWKHU
$VVHPEOLQJD*UDSKLFDO,QWHUIDFH
:LULQJ8SWKH&RQWUROOHU
/LVWHQLQJWRWKH0RGHO
/LVWHQLQJIRU7RXFK(YHQWV
/LVWHQLQJIRU.H\(YHQWV
$OWHUQDWLYH:D\VWR+DQGOH(YHQWV
$GYDQFHG:LULQJ)RFXVDQG7KUHDGLQJ
Table of Contents | v
7KH0HQX
11. A Widget Bestiary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
$QGURLG9LHZV
7H[W9LHZDQG(GLW7H[W
%XWWRQDQG,PDJH%XWWRQ
$GDSWHUVDQG$GDSWHU9LHZV
&KHFN%R[HV5DGLR%XWWRQVDQG6SLQQHUV
9LHZ*URXSV
*DOOHU\DQG*ULG9LHZ
/LVW9LHZDQG/LVW$FWLYLW\
6FUROO9LHZ
7DE+RVW
/D\RXWV
)UDPH/D\RXW
/LQHDU/D\RXW
7DEOH/D\RXW
$EVROXWH/D\RXW
5HODWLYH/D\RXW
12. Drawing 2D and 3D Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
5ROOLQJ
/D\RXW
&DQYDV'UDZLQJ
'UDZDEOHV
%LWPDSV
%OLQJ
6KDGRZV*UDGLHQWVDQG)LOWHUV
$QLPDWLRQ
2SHQ*/*UDSKLFV
13. Inter-Process Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
,QWHQWV6LPSOH/RZ2YHUKHDG,3&
,QWHQW2EMHFWV8VHGLQ,QWHU3URFHVV&RPPXQLFDWLRQ
$FWLYLW\2EMHFWVDQG1DYLJDWLQJWKH8VHU,QWHUIDFH+LHUDUFK\
([DPSOH$Q,QWHQWWR3LFN+RZ:H6D\Ê+HOOR:RUOGÔ
*HWWLQJD5HVXOWYLD,QWHU3URFHVV&RPPXQLFDWLRQ
5HPRWH0HWKRGVDQG$,'/
$QGURLG,QWHUIDFH'HILQLWLRQ/DQJXDJH
&ODVVHV8QGHUO\LQJ$,'/*HQHUDWHG,QWHUIDFHV
3XEOLVKLQJDQ,QWHUIDFH
$QGURLG,3&&RPSDUHGZLWK-DYD1DWLYH,QWHUIDFH-1,
:KDW%LQGHU'RHVQ¦W'R
vi | Table of Contents
%LQGHUDQG/LQX[
14. Simple Phone Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
4XLFNDQG(DV\3KRQH&DOOV
&UHDWLQJDQ([DPSOH$SSOLFDWLRQWR5XQWKHFDOO0HWKRG
(PEHGGLQJWKH&RGH6QLSSHWLQD6LPSOH$SSOLFDWLRQ
([SORULQJWKH3KRQH&RGH7KURXJKWKH'HEXJJHU
&UHDWLQJDQ,QVWDQFHRIDQ,QWHQW
$GGLQJ'DWDWRDQ,QVWDQFHRIDQ,QWHQW
,QLWLDWLQJD3KRQH&DOO
([FHSWLRQ+DQGOLQJ
$QGURLG$SSOLFDWLRQ/HYHO0RGXODULW\DQG7HOHSKRQ\
15. Telephony State Information and Android Telephony Classes . . . . . . . . . . . . . . . . 287
2SHUDWLRQV2IIHUHGE\WKHDQGURLGWHOHSKRQ\3DFNDJH
3DFNDJH6XPPDU\
/LPLWDWLRQVRQ:KDW$SSOLFDWLRQV&DQ'RZLWKWKH3KRQH
([DPSOH'HWHUPLQLQJWKH6WDWHRID&DOO
$QGURLG7HOHSKRQ\,QWHUQDOV
,QWHU3URFHVV&RPPXQLFDWLRQDQG$,'/LQWKH
DQGURLGLQWHUQDOWHOHSKRQ\3DFNDJH
7KHDQGURLGLQWHUQDOWHOHSKRQ\3DFNDJH
7KHDQGURLGLQWHUQDOWHOHSKRQ\JVP3DFNDJH
([SORULQJ$QGURLG7HOHSKRQ\,QWHUQDOV
$QGURLGDQG9R,3
Appendix: Wireless Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Table of Contents | vii
Preface
:KHQ*RRJOHDQQRXQFHGWKHGHYHORSPHQWRI$QGURLGWKHILHOGRIPRELOHSODWIRUPV
ZDVDOUHDG\ZHOOHVWDEOLVKHG(YHQLQWKHQDUURZHUFDWHJRU\RIRSHQVRXUFHSODWIRUPV
DQXPEHURIYLDEOHDOWHUQDWLYHVZHUHEHLQJSXVKHGE\SURSRQHQWV
VWLPXODWHGQRWRQO\ZLGHVSUHDGWHFKQLFDOLQWHUHVWEXWUDPSDQWVSHFXODWLRQDERXWLWV
SRWHQWLDOWRFRPSOHWHO\WUDQVIRUPWKHZRUOGRIWKHSHUVRQDOGHYLFH,QVWHDGRIDFRQ
YHQLHQWSURSWRVXSSRUWDVHWRIIDPLOLDUIXQFWLRQVVXFKDVSKRQHFDOOVHPDLODQG
UHVWDXUDQWORRNXSVWKHHOHFWURQLFGHYLFHFRXOGEHFRPHDQRSHQHQGHGZLQGRZLQWR
WKHZKROHZRUOGÂFRXOGEHFRPHLQVKRUWDQ\WKLQJWKDWWKHXVHUDQGWKHGHYHORSHU
FRXOGWKLQNWRPDNHLW
+RZPXFKRIWKHFRJHQWDQDO\VLVDQGIHUYLGK\SHZLOOFRPHWRSDVVFDQEHGLVFXVVHG
HOVHZKHUHWKLVERRNLVIRUWKRVHZKRZDQWWRJHWWRNQRZWKHSURJUDPPLQJHQYLURQ
PHQWIRU$QGURLGDQGOHDUQZKDWWKH\WKHPVHOYHVFDQGRWRPDNHDGLIIHUHQFH:HKDYH
VSHQWPDQ\JUXHOLQJPRQWKVLQYHVWLJDWLQJWKHVRXUFHFRGHRYHUPXOWLSOHUHOHDVHVDQG
WU\LQJRXWWKHIXQFWLRQVRIWKHOLEUDU\DQGGHYHORSPHQWNLW:HKDYHEHHQZRUNLQJKDUG
WRXQFRYHUWKHWUXH$QGURLGJRLQJEH\RQGDQ\GRFXPHQWDWLRQZHFRXOGILQGRQOLQH
RULQSULQW
7KLVERRNUHDGFDUHIXOO\FDQHQDEOHDQ\-DYDSURJUDPPHUWRGHYHORSXVHIXODQGUREXVW
DSSOLFDWLRQVIRU$QGURLG,WDOVRWDNHV\RXLQWRWKHLQWHUQDOVLQVRPHSODFHVVR\RX
NQRZKRZ$QGURLGVXSSRUWVZKDW\RXƯUHGRLQJÂDQGVR\RXFDQSOD\DURXQGZLWKLWV
RSHQVRXUFHFRGHLI\RXOLNH
Audience
7KLVERRNLVLQWHQGHGIRUH[SHULHQFHGVRIWZDUHGHYHORSHUVZKRZDQWWRGHYHORSDS
SOLFDWLRQVLQWKH$QGURLGPRELOHHQYLURQPHQW,WDVVXPHV\RXKDYHVRPHH[SHULHQFH
ZLWKWKH-DYDSURJUDPPLQJODQJXDJHZLWKXVLQJ-DYDWRLPSOHPHQWXVHULQWHUIDFHV
DQGWKDW\RXDUHDWOHDVWIDPLOLDUZLWKWKHWHFKQRORJLHV$QGURLGXVHVVXFKDV;0/
64/*7DON;033
2SHQ*/(6DQG+773
ix
How This Book Is Organized
7KLVERRNLVRUJDQL]HGDURXQGWKHFRUHH[DPSOHSURJUDPLQWURGXFHGLQ&KDSWHU
/DWHUFKDSWHUVLOOXVWUDWHGHYHORSPHQWWHFKQLTXHVE\DGGLQJWRWKHH[DPSOHWKURXJK
LPSOHPHQWLQJPRGXODUH[WHQVLRQVZKHUHWKLVLVIHDVLEOH6RPHFKDSWHUVDQGWKH$S
SHQGL[
FRYHUPRUHDGYDQFHGWRSLFVWKDWDUHQRWUHTXLUHGIRUPDQ\DSSOLFDWLRQV
3DUW,'HYHORSPHQW.LW:DON7KURXJKJHWV\RXVWDUWHGZLWKWKHEDVLFV\RX¦OOQHHGWR
ZULWHDSSOLFDWLRQV
&KDSWHU*HWWLQJWR.QRZ$QGURLGH[SODLQV$QGURLG¦VSODFHLQWKHPDUNHWDQGLWV
EDVLFDUFKLWHFWXUH
&KDSWHU6HWWLQJ8S
ORDGWKHVRIWZDUH\RXQHHGLQFOXGLQJ(FOLSVHDQGWKH$QGURLGSOXJLQDQGKRZWRJHW
VWDUWHGSURJUDPPLQJ
&KDSWHU8VLQJWKH$QGURLG'HYHORSPHQW(QYLURQPHQWIRU5HDO$SSOLFDWLRQVGHVFULEHV
WKHILOHVWKDWPDNHXSDW\SLFDO$QGURLGSURJUDP
&KDSWHU8QGHUWKH&RYHUV6WDUWXS&RGHDQG5HVRXUFHVLQWKH0-$QGURLG$SSOLFD
WLRQORRNVDWWKHIXQGDPHQWDO-DYDFRGHDQG;0/UHVRXUFHVWKDWHYHU\DSSOLFDWLRQ
QHHGV
&KDSWHU'HEXJJLQJ$QGURLG$SSOLFDWLRQVLQWURGXFHVDQXPEHURIWRROVIRUGHEXJJLQJ
DQGSHUIRUPDQFHLQFOXGLQJ(FOLSVHORJVWKH$QGURLG'HEXJ%ULGJHadb
''06DQG
7UDFHYLHZ
&KDSWHU7KH$SL'HPRV$SSOLFDWLRQRIIHUVDKLJKOHYHOWRXURIWKHVDPSOH$QGURLG
FRGHLQFOXGHGLQWKHWRRONLWZLWKWLSVIRUH[SORULQJLW\RXUVHOI
&KDSWHU6LJQLQJDQG3XEOLVKLQJ
SOLFDWLRQUHDG\IRUSXEOLFXVH
3DUW ,, 3URJUDPPLQJ 7RSLFV H[SORUHV LQ GHSWK WKH PDMRU OLEUDULHV \RX¦OO QHHG DQG
VKRZV\RXKRZWRXVHWKHPHIIHFWLYHO\
&KDSWHU3HUVLVWHQW'DWD6WRUDJH64/LWH'DWDEDVHVDQG&RQWHQW3URYLGHUVVKRZV
KRZWRXVHWKHWZRPRVWSRZHUIXOPHDQVLQ$QGURLGIRUVWRULQJDQGVHUYLQJGDWD
&KDSWHU/RFDWLRQDQG0DSSLQJVKRZVKRZWRGHWHUPLQHDQGGLVSOD\WKHXVHU¦VOR
FDWLRQDQGKRZWRXVH*RRJOH0DSV
&KDSWHU%XLOGLQJD9LHZLQWURGXFHVJUDSKLFDOSURJUDPPLQJRQ$QGURLGE\H[
SODLQLQJKRZWRFUHDWHDQGPDQLSXODWHZLQGRZVDQGYLHZV
&KDSWHU$:LGJHW%HVWLDU\FRYHUVWKHPRVWSRSXODUDQGXVHIXOJUDSKLFDOLQWHUIDFH
HOHPHQWVSURYLGHGE\$QGURLG
&KDSWHU'UDZLQJ'DQG'*UDSKLFVVKRZVKRZWROD\RXWJUDSKLFVDQGGHOYHV
LQWRGUDZLQJWUDQVIRUPLQJDQGDQLPDWLQJ\RXURZQJUDSKLFV
x | Preface
&KDSWHU,QWHU3URFHVV&RPPXQLFDWLRQFRYHUV,QWHQWVDQG5HPRWH0HWKRGVZKLFK
DOORZ\RXWRDFFHVVWKHIXQFWLRQDOLW\RIRWKHUDSSOLFDWLRQV
&KDSWHU6LPSOH3KRQH&DOOVVKRZVKRZWRGLDODQXPEHUIURPDQDSSOLFDWLRQDQG
H[SODLQVKRZ$QGURLGFDUULHVRXWWKHUHTXHVW
&KDSWHU7HOHSKRQ\6WDWH,QIRUPDWLRQDQG$QGURLG7HOHSKRQ\&ODVVHVVKRZVKRZ
WRJHWLQIRUPDWLRQDERXWWHOHSKRQ\VHUYLFHDQGSKRQHFDOOVDQGRIIHUVDWRXURIWHO
HSKRQ\LQWHUQDOV
$SSHQGL[:LUHOHVV3URWRFROVRIIHUVVRPHEDFNJURXQGDQGKLVWRU\RQZLUHOHVVVHUYLFHV
Conventions Used in This Book
7KHIROORZLQJW\SRJUDSKLFDOFRQYHQWLRQVDUHXVHGLQWKLVERRN
,WDOLF
,QGLFDWHVQHZWHUPV85/VHPDLODGGUHVVHVILOHQDPHVDQGILOHH[WHQVLRQV
Constant width
8VHGIRUSURJUDPOLVWLQJVDVZHOODVZLWKLQSDUDJUDSKVWRUHIHUWRSURJUDPHOHPHQWV
VXFKDVYDULDEOHRUIXQFWLRQQDPHVGDWDEDVHVGDWDW\SHVHQYLURQPHQWYDULDEOHV
VWDWHPHQWVDQGNH\ZRUGV
Constant width bold
6KRZVFRPPDQGVRURWKHUWH[WWKDWVKRXOGEHW\SHGOLWHUDOO\E\WKHXVHU
Constant width italic
6KRZVWH[WWKDWVKRXOGEHUHSODFHGZLWKXVHUVXSSOLHGYDOXHVRUE\YDOXHVGHWHU
PLQHGE\FRQWH[W
7KLVLFRQVLJQLILHVDWLSVXJJHVWLRQRUJHQHUDOQRWH
7KLVLFRQLQGLFDWHVDZDUQLQJRUFDXWLRQ
Using Code Examples
7KLVERRNLVKHUHWRKHOS\RXJHW\RXUMREGRQH,QJHQHUDO\RXPD\XVHWKHFRGHLQ
WKLVERRNLQ\RXUSURJUDPVDQGGRFXPHQWDWLRQ
SHUPLVVLRQXQOHVV\RX¦UHUHSURGXFLQJDVLJQLILFDQWSRUWLRQRIWKHFRGH)RUH[DPSOH
ZULWLQJDSURJUDPWKDWXVHVVHYHUDOFKXQNVRIFRGHIURPWKLVERRNGRHVQRWUHTXLUH
SHUPLVVLRQ6HOOLQJRUGLVWULEXWLQJD&'520RIH[DPSOHVIURP2¦5HLOO\ERRNVGRHV
Preface | xi
UHTXLUH SHUPLVVLRQ $QVZHULQJ D TXHVWLRQE\ FLWLQJ WKLV ERRN DQGTXRWLQJ H[DPSOH
FRGHGRHVQRWUHTXLUHSHUPLVVLRQ,QFRUSRUDWLQJDVLJQLILFDQWDPRXQWRIH[DPSOHFRGH
IURPWKLVERRNLQWR\RXUSURGXFW¦VGRFXPHQWDWLRQGRHVUHTXLUHSHUPLVVLRQ
:HDSSUHFLDWHEXWGRQRWUHTXLUHDWWULEXWLRQ$QDWWULEXWLRQXVXDOO\LQFOXGHVWKHWLWOH
DXWKRUSXEOLVKHUDQG,6%1)RUH[DPSOH£$QGURLG$SSOLFDWLRQ'HYHORSPHQWE\5LFN
5RJHUV -RKQ /RPEDUGR =LJXUG 0HGQLHNV DQG %ODNH 0HLNH &RS\ULJKW 5LFN
5RJHUV-RKQ/RPEDUGR=LJXUG0HGQLHNVDQG%ODNH0HLNHÔ
,I\RXIHHO\RXUXVHRIFRGHH[DPSOHVIDOOVRXWVLGHIDLUXVHRUWKHSHUPLVVLRQJLYHQKHUH
IHHOIUHHWRFRQWDFWXVDWSHUPLVVLRQV#RUHLOO\FRP
Safariđ Books Online
:KHQ\RXVHHD6DIDUL%RRNV2QOLQHLFRQRQWKHFRYHURI\RXUIDYRULWH
WHFKQRORJ\ ERRN WKDW PHDQV WKH ERRN LV DYDLODEOH RQOLQH WKURXJK WKH
2¦5HLOO\1HWZRUN6DIDUL%RRNVKHOI
6DIDULRIIHUVDVROXWLRQWKDW¦VEHWWHUWKDQHERRNV,W¦VDYLUWXDOOLEUDU\WKDWOHWV\RXHDVLO\
VHDUFKWKRXVDQGVRIWRSWHFKERRNVFXWDQGSDVWHFRGHVDPSOHVGRZQORDGFKDSWHUV
DQGILQGTXLFNDQVZHUVZKHQ\RXQHHGWKHPRVWDFFXUDWHFXUUHQWLQIRUPDWLRQ7U\LW
IRUIUHHDWKWWSP\VDIDULERRNVRQOLQHFRP
How to Contact Us
3OHDVHDGGUHVVFRPPHQWVDQGTXHVWLRQVFRQFHUQLQJWKLVERRNWRWKHSXEOLVKHU
2¦5HLOO\0HGLD,QF
*UDYHQVWHLQ+LJKZD\1RUWK
6HEDVWRSRO&$
LQWKH8QLWHG6WDWHVRU&DQDGD
LQWHUQDWLRQDORUORFDO