從 2009 年到 2013 我一直致力於 Android Apps 開發之各項教學與推廣活動。到了 2014 年的開始,我想這項階段性任務應該是到了他該結束的時候。也就是說,從 2014 年開始,我將不再承接所有授課、演講與採訪等活動。
2013 mobile app development training courses for Android 4 @ Taiwan
底下是 2013 年設計開的 Android 相關課程。
入門課 - Android應用開發設計實務
首先,我將課程內容都改以 Android 4 平台為主。在這個 Android 入門開發課程中,最重的要的是幫助入門者打好基礎,尤其是 Android 平台的架構,與在該平台上應用程式運作的基礎觀念與原理。這部分要是清楚了,日後遇到問題,要自己找資料解決,也有個方向。另外就是對 ListView 元件的運行原理,也有深入的介紹,ListView 是 Android 眾多 UI 元件中,最常用到的,也是最好用的一個。透過對 ListView 的了解,其他類似的元件如 GridView, Spinner 等由 AdapterView 所延伸的元件,自然也可觸類旁通。
課程大綱
- 熟悉 Android 2.X開發環境與Android平台知識
- 瞭解Android 2.X程式框架
- 如何有效率的偵錯程式
- 功能選單之設計與應用
- 各式使用者介面元件之設計與應用
- 如何支援多國語言與不同的硬體設備
- Intent 的使用
- 深入剖析 Activity 之運作行為
- 發佈應用程式與參考資料
進階課 I - 深入研究三大元件與桌面小工具之開發
這個課程先帶領你深入研究 Android 三大重要元件 (Actiovity, Service, BroadcastReceiver) 的運作原理,與建立正確的使用觀念。其中我會用將近一天的時間來解釋與剖析 Activity & Service 的生命週期。這部分是對已入門的開發者,最最重要的一部分,卻也是最不容易全盤了解與最容易被忽視的一部分。我試玩過很多應用,也看過不少人的程式,與發問的問題,都是源自於對這部分的了解不夠透徹。BroadcastReceiver e也是最常被使用的元件,在學如何開發桌面小工具之前,如何使用這元件的正確觀念是一定要先建立的。接下來,我會介紹如何開發桌面小工具和多媒體應用。對於已熟悉 Android 應用開發,而想進一步提昇您自身應用開發實力與建立正確觀念的您,這個課程是一定要上的。
課程大綱
- 深入研究Android生命週期
- 如何開發自訂使用者元件
- 各式繪圖功能之使用與應用
- BroadcastReceiver之使用與應用
- 深入研究Service之使用與應用
- 如何建立桌面小工具
- 重力加速感應器的使用與應用
- 如何播放與錄製多媒體影音
進階課 II - 深入研究Android 4手機應用新架構
在這個進階課程中,將介紹並帶領學員深入研究 Android 3、4 新應用架構與 APIs。首先要介紹的就是 Fragments,如果你要將你的應用同時執行在手機與平板上,Fragments 是一定要導入的設計概念。就算你只支援手機應用,新的 Fragments 也有助於將你的應用架構,整理的更模組化與達到高重用性的目的。除此之外,我也將一次介紹 Android 3/4 所加進來的各項重要新功能。
課程大綱
- 設計平板與手機應用的最佳策略
- - Fragments 簡介
- - 深入研究 Fragment 生命週期
- - new resource qualifiers
- - 同時支援各式螢幕大小不同的設備
- 支援 Android 3/4 桌面小工具新功能
- - 可縮放的桌面小工具
- - StackView, ListView
- - RemoteViewService
- Android 3/4 新功能
- - Action bar
- - Status bar notifications
- - PreferenceActivity, PreferenceFragment
- - PopupMenu
- - GridLayout
- - Drag & Drop
- - Copy & Past
進階課 III - 雲端/地圖應用開發與原碼解析
在這個進階課程中,我會先介紹如何開發存取網路的 Android 應用。行動網路是智慧型手機的重要特色之一,因此開發具有網路存取功能的應用,也是大家常常會接觸的工作之一。我會在課程中提及如何在 Android 手機平台上,正確執行這項工作。智慧型手機的另項特色,就是 GPS (location-based)。
接下來,我會介紹如何開發地圖 (LBS, location-based) 應用,如何抓取經緯度座標,寫好地圖應用,都是這課程會教的事。
最後,我會花半天的時間,教大家如何讀 Android 應用的源碼,並實際拿個例子來解說。我個人覺得閱讀及追蹤 Android 的原始碼,是提昇你 Android 程式設計功力最好的方式之一。當你已具備 Android 開發基礎的情況下,想要再進一步提升你的程式設計功力,除了要想辦法讓自己多增加些程式設計經驗外,閱讀及追蹤別人寫的程式碼,更是最好的方法。不過網路上,每個人的程式功力高低不同,寫出來的程式也有好有差。讀到不良的程式,看不懂還不打緊,如果誤導你的觀念,那可就得不償失。因此,當你底子還不足以判斷好壞程式時,研讀 Android 原始碼,就是你學習 Android 程式設計時,最好的導師。
在這課程中,也會教授 Android 的第四大重要元件 ContentProvider 的用法,當然也會提及 SQLiteDatabase 這個主題。
課程大綱
- Android雲端應用開發
- - 如何開發以網頁(WebView)為基礎的 Android 應用
- - Android與WebView間的互相呼叫
- - 如何開發Android端網路應用程式,及該注意的要點
- - URL, IntentService, HttpClient, AndroidHttpClient
- - XML 與 JSON parsers 的使用
- Android LBS (地圖)應用開發
- - 如何擷取各式地理座標資訊
- - 如何開發地圖(MapView)應用
- Android原始碼徹底研究
- - 如何研讀Android原碼
- - 深入研讀Android原碼實例
- - SQLiteDatabase, ContentProvider
底下是 2013 年計畫開的課程:
日期 | 地點 | 課程名稱 | 難易度 |
3/6,7 星期三四 | 台北 | Android 4 手機應用開發實務 工研院 | 基礎 |
3/20,21 星期三四 | 台北 | Android 4 手機應用開發實務 工研院 | 進階 I |
4/10,11 星期三四 | 台北 | Android 4 手機應用開發實務 工研院 | 進階 II |
4/24,25 星期三四 | 台北 | Android 4 手機應用開發實務 工研院 | 進階 III |
2 則留言:
老師會在新竹開課嗎?
小弟有個實務上問題想在此冒昧請教, 情境如下:
小弟現在要用一個webview 去 load一個URL,
這個URL包含了一些javascript而該javascript 會要求webview一個儲存空間, 然後下載一段影片, 之後再播放這個影片。
而小弟在實作上雖然在 webview 所在的activity做了以下動作:
settings.setDatabaseEnabled(true);
String databasePath = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
settings.setDatabasePath(databasePath);
settings.setDomStorageEnabled(true);
但是, javascript 那端始終出現錯誤訊息 "File storage is not supported on this browser!" , 以下為javascript那端:
console.log(" -FS: requesting quota..");
if (navigator.webkitPersistentStorage)
navigator.webkitPersistentStorage.requestQuota(1024 * 1024 * 1024, getSpace, function() {
console.log(" -FS: navigator not supported, trying deprecated storageInfo..");
window.storageInfo.requestQuota(window.PERSISTENT, 1024 * 1024 * 1024, getSpace, errorHandler);
});
else if (window.storageInfo)
window.storageInfo.requestQuota(window.PERSISTENT, 1024 * 1024 * 1024, getSpace, errorHandler);
else
throw "File storage is not supported on this browser!";
問題如下:
Q1. 小弟的情境在android 的webview上可以做到嘛 ?
Q2. 如果Q1可以做到, 小弟的實作上遺漏了哪些東西 ?
感謝! 0rz...
張貼留言