這本指南書將教會您成功開發Android應用程序所需的一切。本書涵蓋了Android應用程序開發的所有基礎, 包括用戶界面、網絡、SMS消息傳遞、數據庫、基于位置的服務和部署等。
本書基于真實范例提供了實踐指導,極大地提高了讀者的工作效率?旃澴喽诌m合初學者的內容規劃涵蓋了Android應用開發的所有階段,從熟悉Android Studio到發布至應用市場。本專業指南完全以Android 7和Android Studio 2為開發環境,演示了如何便捷地為所有*新的Android設備開發應用。
在官方版本發布前,我剛開始使用AndroidSDK(SoftwareDevelopmentKit,軟件開發套件)的版本是0.8。當時的開發工具不是很完善,SDK中的API(ApplicationProgrammingInterface,應用編程接口)也不穩定,開發文檔也非常稀缺。但Android現在已經成為世界上最受歡迎的移動操作系統之一。
無論是出于興趣愛好或是工作需要,每天有越來越多的開發人員使用AndroidStudio進行Android開發。對于許多想要進入Android開發世界的新開發者來說,他們所面臨的問題是不知道從哪里開始學習。
這個困難一直在我腦海中不斷地激勵著我寫好這本書。它不僅可以使Android開發初學者受益,而且幫助他們逐步編寫出更復雜的應用程序。
寫這本書是為了幫助那些剛剛入門的Android開發者,通過循序漸進的方式引入必要的主題,通過這種方式能夠幫助你在學習過程中不被過多的細節淹沒。我一直堅持的理念是“實踐是最好的學習方法”。在每個章節中有許多的“試一試”段落教你如何開發,隨后“示例說明”段落會給你解釋它們是如何工作的。通過這個機會,我根據讀者的反饋對本書的前一版進行了改進,并加入了更多對于Android入門開發者來說非常重要的主題。
雖然Android編程是一個很大的主題,但我撰寫本書有三個目的:指導你從基礎開始,幫助你理解SDK的底層架構,使你了解為什么事情是這樣實現的。沒有一本書是可以包含所有Android編程知識的。但是我可以非常自信地告訴你,當讀完這本書(并做完其中的練習)以后,你已經為下一個Android編程挑戰做好了充分準備。
本書讀者對象
本書面向那些使用Google的AndroidSDK開發應用的Android初學者。為了更好地從本書中受益,讀者需要有一定的編程知識,至少了解面向對象編程(Object-OrientedProgramming,OOP)概念。如果完全沒有使用過Java——Android開發中使用的語言,最好先報名參加一個Java編程培訓課程或者找一本比較好的Java編程書學習。根據我的經驗,如果了解C#或VB.NET,學習Java不會有太大困難。如果你已經非常熟悉C#或VB.NET,應該可以輕松地從“試一試”開始學習。
對那些完全不懂編程的人來說,我知道開發移動應用并且賺點錢是非常吸引人的想法。但是,在嘗試本書中的示例之前,我認為最好還是首先學習編程的基礎知識。
本書內容
本書主要包含使用AndroidSDK進行Android編程的基礎知識。內容被劃分成12章和附錄A。
●第1章:Android編程入門。該章主要介紹AndroidOS(OperationSystem,操作系統)基礎知識和現在的狀態,也介紹了Android設備的主要特點和現在市場上主流的Android設備。你會掌握如何下載和安裝AndroidStudio并使用它開發Android應用和在Android模擬器中測試應用。
●第2章:使用AndroidStudio進行Android開發。該章介紹AndroidStudio中大部分的控件。你將了解IDE(IntegratedDevelopmentEnvironment,集成開發環境)和其組件。最后會發布一個完成的應用。
●第3章:Activity、Fragment和Intent。該章介紹這三種組件在Android編程中的基本概念。Activity和Fragment用來構建Android應用區塊。作為AndroidOS獨有的特性,Intent把Activity連接起來生成一個完整的Android應用。
●第4章:了解Android用戶界面。該章介紹多個用于組建Android應用用戶界面(UI)的組件。你將掌握多種布局用來構建應用用戶界面。當用戶與應用交互時,你還將學習許多和用戶界面相關的事件。
●第5章:使用視圖的用戶界面設計。該章介紹多個用來組建Android用戶界面的基礎視圖。學習三種主要的視圖類型:基礎視圖、選擇器視圖和列表視圖。你也會了解在Android3.0和Android4.0中增加的Fragment組件。
●第6章:使用視圖顯示圖片和菜單。該章繼續深入介紹視圖。演示如何使用多種圖片視圖顯示圖片,以及如何在應用中顯示選項和上下文菜單。章末會展示一些能夠使應用更加有趣的酷炫視圖。
●第7章:數據持久化存儲。該章介紹如何在Android應用中存儲數據。除了介紹多個存儲用戶數據的技術外,也會提及文件操作,演示如何把文件保存到內部存儲空間或外部存儲空間(SD卡)。與此同時,你也會學習如何在Android應用中建立和使用SQLite數據庫。
●第8章:ContentProvider。該章討論如何在同一臺Android設備上不同的應用之間共享數據。你會學習如何使用contentprovider組件,然后自己構建一個contentprovider。
●第9章:消息傳送服務。該章介紹兩個在移動手機編程中最有趣的主題——發送短信(SMS)和電子郵件。你會學習如何發送和接收短信和電子郵件,如何攔截發送來的短信使手機中內置的消息傳送應用收不到任何消息。
●第10章:基于位置的服務。該章演示如何使用Google地圖建立一個基于地理位置服務的應用。你也將學習如何獲得地理位置數據,在地圖上顯示此位置。
●第11章:網絡。該章介紹如何連接Web服務器下載數據。學習在Android應用中如何連接和處理XML和JSONWeb服務。該章也會解釋socket編程,最后演示如何在Android中開發一個聊天客戶端。
●第12章:開發Android服務。該章演示如何使用服務編寫應用。服務是不需要用戶界面運行的后臺應用。你將會學習如何在不同的線程上異步地運行服務,如何使Activity模塊與它們通信。
●附錄A:習題答案。所有章節練習題的答案。
本書結構
本書把學習Android編程的任務分為幾個小部分,使你在探索更高級的主題前更好地吸收和消化每一個主題。
如果你完全沒有Android編程的經驗,請從第1章開始學習。當你熟悉了基礎知識,請閱讀第2章并試著了解AndroidStudioIDE。當一切都準備就緒后,請繼續學習第3章并且逐漸深入更高級的主題。
本書的一個特點是每個章節中所有的代碼示例都是獨立于前一個章節的。這使你能夠更加靈活地學習你感興趣的主題,試著從“試一試”項目開始。
使用本書的條件
本書中所有的代碼示例都能在Android模擬器(AndroidSDK和AndroidStudio的一部分)中運行。當然,如果能有一臺真實的Android設備會更好地掌握本書中的知識要點。
本書約定
為了幫助讀者更好地理解本書內容并且保持正確的進度和方向,本書中有以下約定。
試一試這里是為你準備的練習和示例
“試一試”部分會在每章節中出現若干次。這是一些與你閱讀內容相關的練習。
(1)練習有明確的步驟
(2)在你的項目文件中按照步驟操作
示例說明
在每一個“試一試”部分之后,都會有對代碼詳細的解釋。
本書中的其他約定:
●鍵盤快捷鍵會這樣表示:Ctrl+R
●文件名、URL(UniformResourceLocator,統一資源定位符)和文本中的代碼片段在本書中會這樣表示:persistence.properties
在某些特別重要的部分,我們加粗顯示需要強調的代碼。
源代碼
讀者在學習本書中的示例時,可以手動輸入所有的代碼,也可以使用本書附帶的源代碼文件。本書中使用的所有源代碼都可以從www.wrox.com下載。下載源代碼時,選擇本書標題(使用搜索框或者標題列表)并在本書詳情頁面單擊DownloadCode鏈接來獲取所有的源代碼。也可掃描封底的二維碼獲取本書的源代碼。
源代碼文件名在每一個“試一試”標題的最后都會明確顯示。
下載源代碼以后,只需要使用自己喜歡的解壓縮軟件進行解壓縮即可。與此同時,也可以直接到Wrox代碼下載主頁www.wrox.com/dynamic/books/download.aspx瀏覽本書中的源代碼,以及其他Wrox書中的代碼。
勘誤表
盡管我們已經盡了各種努力來保證文章或代碼中不出現錯誤,但是錯誤總是難免的,如果你在本書中找到了錯誤,例如拼寫錯誤或代碼錯誤,請告訴我們,我們將非常感激。通過勘誤表,可以讓其他讀者避免受挫,當然,這還有助于提供更高質量的信息。
要在網站上找到本書的勘誤表,可以登錄http://www.wrox.com,通過Search工具或書名列表查找本書,然后在本書的細目頁面上,單擊BookErrata鏈接。在這個頁面上可以查看Wrox編輯已提交和粘貼的所有勘誤項。完整的圖書列表還包括每本書的勘誤表,網址是www.wrox.com/misc-pages/booklist.shtml。
如果在BookErrata頁面上沒有看到你找出的錯誤,請進入www.wrox.com/contact/techsupport.shtml,填寫表單,發電子郵件,我們就會檢查你的信息,如果是正確的,就在本書的勘誤表中粘貼一個消息,我們將在本書的后續版本中采用。
p2p.wrox.com
P2P郵件列表是為作者和讀者之間的討論而建立的。讀者可以在p2p.wrox.com上加入P2P論壇。該論壇是一個基于Web的系統,用于傳送與Wrox圖書相關的信息和相關技術,與其他讀者和技術用戶交流。該論壇提供了訂閱功能,當論壇上有新帖子時,會給你發送你選擇的主題。Wrox作者、編輯和其他業界專家和讀者都會在這個論壇上進行討論。
在http://p2p.wrox.com上有許多不同的論壇,幫助讀者閱讀本書,在讀者開發自己的應用程序時,也可以從這個論壇中獲益。要加入這個論壇,必須執行下面的步驟:
(1)進入p2p.wrox.com,單擊Register鏈接。
(2)閱讀其內容,單擊Agree按鈕。
(3)提供加入論壇所需的信息及愿意提供的可選信息,單擊Submit按鈕。
(4)然后就可以收到一封電子郵件,其中的信息描述了如何驗證賬戶,完成加入過程。
提示:
不加入P2P也可以閱讀論壇上的信息,但只有加入論壇后,才能發送自己的信息。
加入論壇后,就可以發送新信息,回應其他用戶的帖子?梢噪S時在Web上閱讀信息。如果希望某個論壇給自己發送新信息,可以在論壇列表中單擊該論壇對應的SubscribetothisForum圖標。
對于如何使用WroxP2P的更多信息,可閱讀P2PFAQ,了解論壇軟件的工作原理,以及許多針對P2P和Wrox圖書的常見問題解答。要閱讀FAQ,可以單擊任意P2P頁面上的FAQ鏈接。
J.F.DiMarzio從1984年開始在TRS-80 II彩色計算機上使用BASIC編程語言開發游戲。如今,他是一名資深的Android工程師,在Android應用市場中擁有2個專業應用和1個游戲,并曾供職于美國國防部和華特迪士尼等多家公司。作為一名成功的作者,在過去的14年中他編寫了13本圖書。
第1章 Android編程入門 1
1.1 Android的定義 1
1.1.1 Android版本 2
1.1.2 Android功能 3
1.1.3 Android構架 3
1.1.4 市場中的Android設備 4
1.1.5 Android Market 6
1.2 準備開發所需的工具 6
1.2.1 Android Studio 6
1.2.2 Android SDK 12
1.2.3 創建Android虛擬機 13
1.2.4 Android開發者社區 20
1.3 運行你的第一個Android應用 20
1.4 小結 22
第2章 使用Android Studio進行Android開發 23
2.1 探討IDE 23
2.2 使用代碼自動補全功能 30
2.3 調試應用 31
2.3.1 設置斷點 31
2.3.2 導航暫停的代碼 35
2.4 發布應用 36
2.5 小結 38
第3章 Activity、Fragment和Intent 39
3.1 理解Activity 40
3.1.1 在Activity上應用樣式和主題 45
3.1.2 隱藏Activity的標題 46
3.1.3 顯示對話框 48
3.1.4 顯示進度對話框 50
3.2 使用Intent鏈接Activity 53
3.2.1 使用Intent對象返回結果 57
3.2.2 使用Intent對象傳遞數據 62
3.3 Fragment 67
3.3.1 動態添加fragment 73
3.3.2 fragment的生命周期 76
3.3.3 fragment之間的交互 80
3.3.4 理解Intent對象的概念 83
3.3.5 使用Intent過濾器 85
3.4 顯示Notification 85
3.5 小結 89
第4章 了解Android用戶界面 91
4.1 屏幕組件介紹 91
4.1.1 視圖和ViewGroup 93
4.1.2 FrameLayout 93
4.1.3 LinearLayout(水平)和LinearLayout(垂直) 94
4.1.4 TableLayout 103
4.1.5 RelativeLayout 105
4.1.6 FrameLayout 106
4.1.7 ScrollView 109
4.2 適配顯示方向 111
4.3 管理屏幕的方向變化 114
4.3.1 在配置發生變化時保存狀態信息 118
4.3.2 檢測方向變化 119
4.3.3 控制Activity的方向 119
4.4 使用Action Bar 120
4.5 通過編程創建用戶界面 129
4.6 監聽UI通知 132
4.7 小結 132
第5章 基于視圖的用戶界面設計 135
5.1 使用基礎視圖 136
5.1.1 TextView視圖 136
5.1.2 Button、ImageButton、EditText、CheckBox、ToggleButton、RadioButton、
RadioGroup視圖 136
5.1.3 ProgressBar視圖 145
5.1.4 AutoCompleteTextView視圖 152
5.2 使用選擇器視圖 154
5.2.1 TimePicker視圖 154
5.2.2 DatePicker視圖 159
5.3 使用列表視圖顯示長列表 162
5.3.1 ListView視圖 162
5.3.2 使用Spinner視圖 171
5.4 理解專用fragment 173
5.4.1 使用ListFragment 173
5.4.2 使用DialogFragment 178
5.4.3 使用PreferenceFragment 181
5.5 小結 185
第6章 使用視圖顯示圖片和菜單 189
6.1 使用Image視圖顯示圖片 189
6.1.1 ImageView視圖 190
6.1.2 ImageSwitcher 192
6.1.3 GridView 196
6.2 菜單與視圖 200
6.2.1 創建輔助方法 200
6.2.2 選項菜單 202
6.2.3 上下文菜單 205
6.3 使用WebView 209
6.4 小結 212
第7章 數據持久化存儲 215
7.1 保存和讀取用戶偏好 215
7.1.1 使用Activity訪問偏好數據 216
7.1.2 編程獲取和修改偏好數據 224
7.2 使用文件持久保存數據 227
7.2.1 保存到內部存儲 227
7.2.2 保存到外部存儲(SD卡) 232
7.2.3 正確選擇最佳存儲方式 234
7.3 創建和使用數據庫 235
7.3.1 創建DBAdapter輔助類 235
7.3.2 通過編程使用數據庫 241
7.4 小結 247
第8章 Content Provider 249
8.1 在Android中共享數據 249
8.2 使用content provider 250
8.2.1 預定義查詢字符串常量 256
8.2.2 指定查詢字段 258
8.2.3 篩選 259
8.2.4 排序 259
8.3 創建自定義content provider 260
8.4 使用自定義content provider 268
8.5 小結 274
第9章 消息傳送服務 277
9.1 短信服務 277
9.1.1 通過編程發送短信 278
9.1.2 使用Intent發送短信 282
9.1.3 接收短信 282
9.1.4 警告 299
9.2 發送電子郵件 299
9.3 小結 302
第10章 基于位置的服務 303
10.1 顯示地圖 304
10.1.1 創建項目 304
10.1.2 獲取地圖API密鑰 304
10.1.3 顯示地圖 305
10.1.4 顯示縮放控件 306
10.1.5 切換視圖 309
10.1.6 導航至指定位置 310
10.1.7 獲取單擊位置 312
10.1.8 地址編碼與反向地址編碼 313
10.2 獲取位置數據 316
10.3 位置監控 324
10.4 小結 325
第11章 網絡 327
11.1 使用HTTP訪問Web服務 328
11.1.1 下載二進制數據 330
11.1.2 下載文本內容 337
11.1.3 使用GET方法訪問Web服務 340
11.2 訪問JSON服務 346
11.3 小結 354
第12章 開發Android服務 357
12.1 創建自己的服務 357
12.1.1 在服務中執行長時間運行的任務 362
12.1.2 在服務中執行重復任務 367
12.1.3 使用IntentService在獨立線程中執行異步任務 370
12.2 在服務和Activity之間建立通信 373
12.3 將Activity與服務綁定 377
12.4 線程的概念 383
12.5 小結 388
附錄A 練習答案 391
1.1.2Android功能因為Android是開源的并且生產商可以自由地定制,所以不存在固定的硬件或軟件配置。然而,標準Android操作系統提供了許多功能,包括:●存儲——SQLite,一個輕量級關系數據庫,用來執行數據存儲。第7章會詳細討論數據存儲!襁B接——GSM/EDGE、IDEN、CDMA、EV-DO、UMTS、Bluetooth(藍牙,包括A2DP和AVRCP)、Wi-Fi、LTE以及WiMAX。第11章會詳細討論網絡連接!裣魉汀猄MS和MMS。第9章會詳細討論消息傳送。●多媒體——支持H.263、H.264(使用3GP或MP4容器)、MPEG-4SP、AMR、AMR-WB(使用3GP容器)、AAC、HE-AAC(使用MP4或3GP容器)、MP3、MIDI、OggVorbis、WAV、JPEG、PNG、GIF以及BMP。●硬件支持——加速度傳感器、攝像頭、數字指南針、距離傳感器和GPS!穸帱c觸控——多點觸屏!穸嗳蝿铡嗳蝿諔!駸狳c——通過有線或者無線熱點共享互聯網連接。Android的網頁瀏覽器基于開發開源項目WebKit和Chrome的V8JavaScript引擎。1.1.3Android構架要了解Android是如何工作的,請參考圖1-1。圖中展示了組成Android操作系統(OS)的各個層。Android操作系統被大致分為主要四層,共五大部分:●Linux內核(LinuxKernel)——這個是Android的內核。這一層包含了Android設備所有硬件組件的底層設備驅動!翊a庫(Library)——這里包含了Android操作系統主要功能的代碼。例如,SQLite庫提供了數據庫支持,應用可以使用它存儲數據。WebKit庫提供了網頁瀏覽的功能。●Android運行庫(AndroidRuntime)——Android運行庫和代碼庫屬于同一層。為開發者提供核心庫,使開發者可使用Java編程語言編寫Android應用。Android運行庫同時包含Dalvik虛擬機,它使每一個Android應用運行在自己的進程上,并使用自己的Dalvik虛擬機實例(Android應用被編譯成Dalvik可執行文件)。Dalvik是特Android7編程入門經典(第4版)使用AndroidStudio24別為Android設計的虛擬機,為有限的內存和CPU性能的電池供電移動設備做了特殊優化。應用應用框架庫LINUX內核圖1-1●應用框架(ApplicationFramework)——應用構架層為應用開發者開放了各種Android操作系統的功能,使開發者可以在自己的應用中使用!駪脤(Application)——最高層包含了Android設備上的原生應用(例如電話、通訊錄、瀏覽器等),以及用戶從AndroidMarket下載和安裝的應用。所有你開發的應用也位于這一層。1.1.4市場中的Android設備在市場上能找到各種形狀和尺寸的Android設備,包括但不局限于下面幾種類型:●智能手機●平板電腦●電子閱讀器●網路電視●自動駕駛汽車●智能手表很可能你至少擁有一個以上的上述設備。圖1-2所示為Samsung(三星)GlaxyEdge7。另外一種比較流行的設備是平板電腦。平板電腦主要有7英寸和10英寸兩種尺寸(對角線測量)。除了智能手機和平板電腦以外,Android也用在專用設備上,比如電子閱讀器。圖1-4第1章Android編程入門5所示為使用Android操作系統的由BarnesandNoble’s出品的NOOKColor電子閱讀器。除了我前面提到的流行的移動設備,Android也出現在了我們的手腕上。智能手表以及可穿戴設備已經成為一個主要的Android分支。圖1-3所示是摩托羅拉的Moto360智能手表,運行的是AndroidWear(專門為可穿戴設備設計的一個Android操作系統)。圖1-2圖1-3當筆者正在寫作本書時,三星GalaxyNexus(見圖1-4)是唯一運行純凈版本的Android的設備。許多生產商在Android操作系統上添加了自己的修改,以便用在他們特定的設備上。摩托羅拉的設備運行Motoblur,HTC的設備運行HTCSense等。然而,Nexus設備只會運行沒有修改過的純凈版本的Android。圖1-4Android7編程入門經典(第4版)使用AndroidStudio261.1.5AndroidMarket如前所述,應用是決定一個智能手機平臺是否成功的關鍵要素之一。iPhone的成功就再一次印證了應用在決定一個新平臺是否成功中扮演著多么重要的角色。與此同時,如何讓普通用戶更加方便快捷地下載和安裝應用就變得極其重要。用戶可以非常方便地使用預先安裝在Android設備中的GooglePlay來獲取第三方提供的應用。在GooglePlay商店中,用戶可以下載各種付費和免費的應用。由于一些法律問題,付費應用只在某些國家開放下載和安裝。1.2準備開發所需的工具現在你已經知道Android是什么并且知道它能做些什么,我相信你已經迫不及待地想要開發一些Android應用了。但是在開始開發第一個應用之前,還需要準備好一些必要的開發工具?梢栽谘b有Mac、Windows或者Linux系統的電腦上開發Android應用。Android開發中所有的必備工具都是可以免費獲取的。本書中幾乎所有的程序示例都是在AndroidStudio中開發的。筆者使用的是Windows10操作系統。如果你使用的是Mac或者Linux系統,本書中出現的截圖會和你在電腦中看到的大致相同。即使稍有區別,也不會影響你的操作過程,F在就讓我們開始這段奇妙之旅吧!JavaJDK8使用AndroidStudio2需要在電腦上安裝JavaSEDevelopmentKit8(JDK)。如果你的電腦上還沒有安裝JDK8,需要在進入下一步之前先到以下地址下載并安裝JDK8:www.oracle.com/technetwork/java/javase/downloads/jdk8-download-2133151.html1.2.1AndroidStudio首先需要下載的最重要的開發工具是AndroidStudio2。當下載并安裝了AndroidStudio2以后,就可以使用SDK管理器下載和安裝多個不同版本的AndroidSDK。同時安裝多個版本的AndroidSDK可以使你能夠為不同設備開發應用。例如,你可以開發一個針對AndroidNougat的應用,但是現在只有不到1%的Android手機使用這個系統。由于安裝了多個版本的AndroidSDK,因此也可以同時發布針對AndroidMarshmallow和AndroidLollipop用戶的應用?梢允褂肁ndroid設備管理器新建設備模擬器。注意:第13章將詳細介紹GooglePlay商店以及如何在GooglePlay商店中銷售自己開發的應用。第1章Android編程入門7可從以下地址下載AndroidStudio2(見圖1-5):http://developer.android.com/sdk/index.html。圖1-5AndroidStudio2打包在一個可執行文件中。運行該執行文件安裝和配置AndroidStudio2。當下載并運行安裝程序以后,可通過以下步驟完成安裝:(1)接受如圖1-6所示的使用條款。圖1-6