android高效入門>深入學習 書籍介紹 (下)

By | 2016-06-12

前10個章節目的是建立對於有關專案、類別、資源、清單、資料儲存、事件等基礎觀念與能力,後續章節在基礎上再加入不同的知識與技能,介紹如下:

第11章需要第10章的內容供應器的認識,再加入手機內的圖檔與其自動產生的縮圖,再融合先前GridView的能力,加上CursorLoader的新觀念,實作一個類似相片庫的APP,在本章不使用進階如ViewPager元件,目的是整合所學到的能力再加入新觀念,內容如下:

Chapter 11 圖檔處理與手勢

  • 11-1  存取手機相片
  • 11-1-1 原圖與縮圖
  • 11-1-2 準備測試圖檔
  • 11-1-3 建立專案與權限處理
  • 11-2  以 GridView 展示縮圖
  • 11-2-1 建立單項縮圖的版面
  • 11-2-2 自動更新 Cursor 的設計-CursorLoader
  • 11-2-3 查詢縮圖
  • 11-3  點擊後顯示圖檔
  • 11-3-1 建立 DetailActivity
  • 11-3-2 實作項目點擊事件
  • 11-3-3 DetailActivity 中讀取圖檔並顯示
  • 11-4  手勢滑動更換圖檔
  • 11-4-1 實作 GestureDetectorOnGestureListener
  • 11-4-2 GestureDetector 屬性
  • 11-4-3 覆寫 onTouchEvent 方法
  • 11-4-4 設計 onFling 方法

第12章談的是Fragment片段,由它的來由說起,幫助瞭解為什麼會有這個元件,其獨有的生命週期目的是要與Activity活動互動、配合,以兩個不同的需求案例示範實作的方式,內容如下:

Chapter 12 Fragment

  • 12-1  Fragment 的生命週期
  • 12-1-1 產生階段(未出現在畫面上)
  • 12-1-2 準備階段(出現在畫面上)
  • 12-1-3 暫停階段
  • 12-2  使用 Fragment 的 Activity
  • 12-3  實作 Fragment 生命週期方法
  • 12-3-1 測試與觀察
  • 12-4  Fragment 實作
  • 12-4-1 上下不同種類的 Fragment
  • 12-4-2 建立新類別並繼承 Fragment 類別
  • 12-4-3 設計 ContactActivity
  • 12-4-4 單一物件設計模式-Singleton
  • 12-4-5 Support v4 類別庫
  • 12-5  同一位置使用不同種類的 Fragment
  • 12-5-1 設計新類別-SwapActivity
  • 12-5-2 設計初始畫面
  • 12-5-3 放入 Fragment
  • 12-5-4 FragmentTransaction -區塊交易
  • 12-5-5 按下返回鍵時的處理

第13章是網路程式設計與非同步工作(AsyncTask)的設計,在Android處理耗時工作的方法中,以AsyncTask為例,處理HTTP連線並取得伺服器回應資料。這是個很重要的章節,內容也非常多,應多花點時間實作本章的所有案例,直到能夠快速地設計出符合需求的類別,內容如下:

Chapter 13 網路程式與 AsyncTask

  • 13-1  輸出入套件
  • 13-1-1 輸出入類別
  • 13-1-2 byte 轉換為 char
  • 13-2  Java 網路套件
  • 13-2-1 Socket 類別
  • 13-3  HTTP 協定
  • 13-3-1 HTTP 要求與回應
  • 13-3-2 URLConnection 類別
  • 13-3-3 傳送參數-GET
  • 13-3-4 參數值的編碼
  • 13-3-5 參數值的編碼
  • 13-3-6 傳送參數-POST
  • 13-3-7 HttpURLConnection 類別
  • 13-4  UI 執行緒與耗時工作
  • 13-5  耗時工作處理-AsyncTask 類別
  • 13-5-1 設計 AsyncTask
  • 13-5-2 與 UI thread 互通的方法
  • 13-6  Async 練習專案
  • 13-6-1 專案準備
  • 13-6-2 需求 1 -Job1Task 類別
  • 13-6-3 需求 2 -Job2Task 類別
  • 13-6-4 需求 3 -Job3Task 類別
  • 13-7  Atm 專案登入範例
  • 13-7-1 加入 INTERNET 權限
  • 13-7-2 設計網路連線登入的 AsyncTask 內部類別
  • 13-7-3 doInBackground 實作
  • 13-7-4 修改 login 方法
  • 13-7-5 測試

第14章是基於13章的內容進行延伸學習的章節,除一開始使用okHttp類別庫進行HTTP連線、取得資料外,重點是如何解析JSON資料並收集、轉換成為Java語言能夠處理的集合(ArrayList),使用了三種類別庫進行解析,本章在最後加上Android 5.0開始的新清單元件RecyclerView的實作方法,並介紹ViewHolder設計模式,內容如下:

Chapter 14 解析 JSON 與使用第三方類別庫

  • 14-1  Gradle 設定檔
  • 14-2  讀取 JSON 資料
  • 14-2-1 取得伺服端傳來回應
  • 14-2-2 使用 OkHttp 第三方函式庫
  • 14-3  解析 JSON 陣列
  • 14-3-1 設計交易類別 Transaction
  • 14-3-2 使用 JSONorg 解析
  • 14-3-3 使用 Gson 第三方函式庫
  • 14-3-4 使用 Jackson 第三方函式庫
  • 14-4  使用 RecyclerView 展示清單資料
  • 14-4-1 使用 RecyclerView 元件
  • 14-4-2 設計單筆資料版面配置
  • 14-4-3 設計 Adapter 與 ViewHolder 設計模式

15章可說是本書的一個亮點章節,由於2016年Google IO才剛發表了新版Firebase的API,因此加入許多與之舊版不同的處理方式,由於新的API實在太豐富,為了學習過程由淺入深,內容從手動建立資料,到Android端讀取成為ListView內的元素、Email與密碼驗證、註冊帳號等,希望由基礎開始熟悉,建立未來Firebase各類進階功能的底層知識,章節內容如下:

Chapter 15 Firebase 註冊與驗證

  • 15-1  使用 Firebase
  • 15-1-1 註冊 Firebase 帳號
  • 15-1-2 建立 Firebase 專案
  • 15-1-3 資料庫管理(Database)
  • 15-1-4 建立資料
  • 15-1-5 安全性規則
  • 15-2  Android 端設計
  • 15-2-1 導入 Firebase Android API
  • 15-2-2 ListView 與 Adapter
  • 15-2-3 連結 Firebase 取得資料
  • 15-2-4 自動更新
  • 15-3  導入 Firebase 至 Android 專案
  • 15-3-1 更新 SDK 工具
  • 15-3-2 更新模擬器到最新版本
  • 15-3-3 取得開發環境金鑰的指紋碼
  • 15-3-4 取得 google-servicesjson 設定檔
  • 15-3-5 設定類別庫與外掛
  • 15-4  啟動 Email 與密碼驗證
  • 15-4-1 手動建立帳號
  • 15-4-2 登入畫面實作
  • 15-5  Email 註冊功能
  • 15-5-1 實作註冊詢問對話框
  • 15-5-2 註冊新帳號
  • 15-5-3 執行結果
  • 15-6  將資料儲存在 Firebase 上
  • 15-6-1 使用 setValue 方法
  • 15-6-2 更動資料的 callback
  • 15-6-3 使用 push 方法

第16章介紹Android要件之一Broadcast廣播接收器與Intent意圖,對未來進階時會遇到的Intent Filter做好準備,內容如下:

Chapter 16 Intent 與 Broadcast

  • 16-1  Intent 意圖
  • 16-1-1 Android 的應用程式架構
  • 16-1-2 明確指定對象的 Intent
  • 16-1-3 無特定對象的 Intent
  • 16-2  Intent 的組成要件
  • 16-2-1 Intent 的比對
  • 16-3  Broadcast 廣播
  • 16-3-1 Broadcast Receiver 廣播接收器
  • 16-3-2 接收時 onReceived
  • 16-3-3 AndroidManifestxml 註冊
  • 16-3-4 手動註冊
  • 16-3-5 取消註冊

第17章為小章節,談的是通知Notification,從新版到為了向下相容的Support類別,並能夠實作按下通知後的動作與開啟特定的活動,內容如下:

Chapter 17 通知 Notification

  • 17-1  什麼是 Notification
  • 17-1-1 與舊版本 Android 的關係
  • 17-1-2 使用 NotificationBuilder 產生 Notification
  • 17-1-3 保有向下相容性
  • 17-1-4 使用 NotificationManager 送出通知
  • 17-2  附加動作在通知中
  • 17-2-1 PendingIntent
  • 17-2-2 返回時的導覽順序

第18章談的是服務Service,專案中一個沒有畫面的Java類別,就服務與活動的關係分為兩大類服務,介紹如何產生、執行、建立綁定關係,內容如下:

Chapter 18 Service

  • 18-1  什麼是 Service
  • 18-1-1 Service 類別
  • 18-1-2 宣告 Service
  • 18-2  獨立運作 Service
  • 18-2-1 生命週期
  • 18-2-2 設計服務
  • 18-2-3 啟動服務
  • 18-2-4 啟動服務的原則
  • 18-2-5 實作練習
  • 18-3  IntentService
  • 18-4  綁定型 Service
  • 18-4-1 建立綁定關係
  • 18-4-2 脫離已綁定服務
  • 18-4-3 實作練習
  • 18-4-4 綁定型 Service 的生命週期

學習Android一定不會放過地圖應用,第19章是本書的重點章節,首先從環境與函式庫的準備著手,許多試著實作地圖的人,大都在第一步就遇到挫折。本章說明官方與Genymotion第三方模擬器與Google Play Services的詳細介紹,並實作我的位置、使用註解處理權限偵測機制,也包括了手機原生的定位服務與使用Google Play Services所提供的Google API方式,並在地圖上處理標示(Marker),內容如下:

Chapter 19 Google Maps 地圖應用

  • 19-1  Google Maps 應用的開發要件
  • 19-1-1 Google Play Services -模擬器
  • 19-1-2 Google Play services -SDK 安裝
  • 19-2  模擬器準備
  • 19-2-1 使用官方模擬器測試
  • 19-2-2 使用 GenyMotion 模擬器測試
  • 19-3  手機上顯示 Google Maps 元件
  • 19-3-1 建立 Maps 專案
  • 19-3-2 申請 Google Maps API Key
  • 19-3-3 權限
  • 19-3-4 取得 GoogleMap 元件
  • 19-4  使用 MyLocation 功能
  • 19-4-1 請求權限
  • 19-4-2 使用者回覆授權處理
  • 19-4-3 設計按下 MyLocation 的功能
  • 19-4-4 GPS 定位服務
  • 19-4-5 使用 Location API
  • 19-4-6 GoogleMap 的事件
  • 19-4-7 啟用 Zoom
  • 19-4-8 GPS 位置的變動
  • 19-5  標記-Marker
  • 19-5-1 使用標記
  • 19-5-2 更換標記圖示
  • 19-5-3 顯示資訊視窗-InfoWindow
  • 19-5-4 自訂資訊視窗
  • 19-5-5 點擊標記的事件

最後的20章先介紹憑證與金鑰的概念,不同金鑰的目的與產生方式,並說明如何將完成的APP上架至Google Play Store中,內容如下:

Chapter 20 上架佈署應用程式

  • 20-1  應用程式的憑證
  • 20-1-1 開發用金鑰(debugkeystore)
  • 20-1-2 發行專用金鑰
  • 20-1-3 付費成為開發者會員
  • 20-1-4 準備必要資料與檔案
  • 20-2  Google Play 上架流程
  • 20-2-1 開發者管理介面
  • 20-2-2 新增應用程式
  • 20-2-3 準備商店資訊
  • 20-2-4 內容分級
  • 20-2-5 定價與發佈
  • 20-2-6 完成所有設定並發佈

相關文章:

Category: Android 標籤:, ,

About Hank Tom

專長為程式語言、雲端服務開發,Linux系統管理, 任職:利拓科技 技術長,海林行動科技 技術總監 輔仁大學 兼任助理教授 , 為 Android高效入門>深度學習、CentOS 7建置、管理與伺服器架設實戰、Java網路程式設計、雲端網頁程式設計-Google App Engine應用實作 等書作者

4 thoughts on “android高效入門>深入學習 書籍介紹 (下)

  1. 安迪

    您好
    本人有購買貴作者的書籍來拜讀,在實作了第15章的『15-6-3 使用 push 方法』章節,遇到一點問題想請教。

    問題如下
    依照書上的方式也參考了光碟的資料後確實可以實施
    但是在使用push方法的時候會發生一次寫入多筆同樣的資料的問題,而且有個奇怪的現象,EX:第一次 一次寫入2筆、第二次 寫入3~4筆…(沒有規律且不知道是甚麼原因會觸發此狀況,但是每次的寫入都會超過一筆)
    經測試發現使用光碟範例一樣(已更換 google-services.json檔)會產生同樣的問題且書上的附圖(15-44頁)也顯示push時非一筆資料

    請作者您幫忙解答一下,謝謝您

    Reply
    1. Hank Tom Post author

      我就不客套,先回答您的問題
      在光碟中的projects.zip內的FireChat專案範例,是為了要能demo使用push的所能得到的成果,因此在當時我將方法的呼叫寫在AuthStateListener的匿名類別中,主要是測試它的成效,如下圖:
      Firebase問題回覆push.png
      您所發生的新增多筆朋友資料的原因是,這個匿名類別被呼叫了多次,Firebase會在驗證時、驗證成功都會去呼叫它,書中的push的程式碼是正確的,只是範例測試我放錯地方了。您可以將pushFriend()方法移到onCreate內(不是匿名類別內),就能得到正確的結果。
      另,您所說的書上的圖,經檢視過是正確的(上面那筆是users的UID),謝謝。

      Reply
      1. 安迪

        我依照您說的將『pushFriend()方法移到onCreate內(不是匿名類別內)』,執行後會直接”失敗”,logcat會出現以下的Exception以下的
        『java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tom.firechat/com.tom.firechat.LoginActivity}: java.lang.NullPointerException: Can’t pass null for argument ‘pathString’ in child()』

        另,我指書上的圖疑問的是跟friends同層的那一條往下的線是另一筆同樣的資料?還是?

        Reply
        1. Hank Tom Post author

          我上一個回覆得籠統了,我範例是在”會員”的記錄中可以加入好友,所以如果直接寫在onCreate中而未先檢查是否已登入是不行的。所以沒有user的記錄,書中的片段程式碼應該用在如:
          1. app先要求使用者登入
          2. 再提供另一個畫面讓人建立好友,建立時先檢查是否已登入,才能將好友存在帳號下
          如果你想實測,可以放在原本的onCreate中,但在書中p15-43的程式就不要使用UUID做為會員名稱,改成如下:
          05行
          usersRef.child(“測試帳號”).child(“friends”).push();

          Reply

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *