Skip to main content

· 3 min read

一直以來,在業餘時間裡我做了不少 Mobile App,寫了本 Android 開發書籍,參與並研究了一些 Web 框架和服務。前年開始也直接將Play!Django等 Web 框架,和 Android 開發的經驗應用在工作上。

我相信整合 Web 與 Mobile,以雲為基礎建設,讓連網設備 / 使用者得以跨平台在各種終端使用的應用,會是接下來技術的趨勢。

在主持GTUG Taipei 活動的兩年時間裡,跟著學了很多新東西,從中我也發現,現在已經有許多企業級或跟 Mobile App 開發相關的技術,都可以歸類到 Web 技術範疇了:

  • 越來越多人使用 JSON 來取代 XML
  • 各種 RPC 紛紛改成使用 RESTFUL API* non-rel, 適應雲端架構的MongoDB也可直接將資料儲存成 JSON 格式
  • Web Server 端可以使用 node.js 寫,透過 Event callback 形式的呼叫,可以得到很好的效能
  • 可以使用PhoneGap/Cordova來封裝成各行動平台的 App
  • 最近名字跟 Microsoft 連在一起Titanium 也可以用網頁技術生成各行動平台的 App

因此當我知道 Firefox OS 在台灣有開發團隊時, 我告訴自己:這是個可以待在台灣,同時又有可能改變世界的機會。

我很幸運,待的前公司環境與同事也非常好,可以推薦給大家。 當然,也歡迎大家來和我作伙伴

接下來我的分享應該會多出不少 Firefox OS 相關的心得,敬請期待。

· 3 min read

幾周前在 GTUG Taipei 活動,聽了 David Wu 分享的 "A Deep Dive into Android Open Source Project" 演講,回來後對 Slide Menu 效果很感興趣,也在gPaper 改版時使用到這個技巧。

後來我選擇使用的是 Simple Side Drawer 這個 Library https://github.com/adamrocker/simple-side-drawer

Simple Side Drawer 的好處是只要把它提供的 jar 檔放到專案中,就可以搭配如ActionBarSherlock等函式庫一起使用。

使用 Simple Side Drawer

使用時首先是下載 jar 檔放進專案的 lib 目錄中並匯入。

接著需要在 onCreate 中初始化:

> protected void onCreate (Bundle data) {
>    ....
>
> mSlidingMenu = new SimpleSideDrawer(this);
> mSlidingMenu.setBehindContentView(R.layout.behind_menu);`</pre><pre>`&nbsp;`</pre><pre>`}`</pre><pre>`之後在程式裡的任何地方,都可以透過呼叫:`</pre><pre>`&nbsp;`</pre>> <pre>`<code>mSlidingMenu.toggleDrawer();`&nbsp;</code></pre><pre>`

來控制側邊欄的開關。下面以常見的點選 App 圖示來控制側邊滑動選單做例子,來介紹側邊滑動選單可以如何整合到 App 中。

透過點選App圖示控制側邊滑動選單

將 Side Menu Drawer 設定好之後,並不會有按了 App 圖示就開啟側邊選單的效果,需要一些程式碼來控制。

在程式中的 onCreate 或 onResume 裡加入控制碼,強制顯示 App 圖示旁的小箭頭,作為側邊滑動選單的視覺參照,讓使用者注意到 App 圖示點選了還有功能:

ActionBar actionBar = this.getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true);

在 onOptionsItemSelected 的判斷裡,加入點選 App 圖示時的動作:

case android.R.id.home:     mSlidingMenu.toggleDrawer();     return true;

這樣點選 App 圖示後,就會出現開關側邊滑動選單的效果。

· One min read

前年為了慶祝小朋友出生,寫了gPaper (原名 gTracingPaper) 這個描圖 App。

gPaper的特色是除了基本的白板、黑板或任意顏色的畫板可供塗鴉之外,還可以匯入圖片或照片當作底圖來照著描繪。

畫好後的圖片可以單獨儲存,或是將底圖一同輸出 (如上圖效果)。

這次改版將諸多原本在子選單裡的功能都放到如同 G+、FB 的側邊滑動功能選單裡,主界面變得清爽多了,操作時也減少了一次點選步驟。

gpaper App 可以直接從 Play Store 下載。

Get it on Google Play

· 3 min read

取得台灣當季蔬果 App

最近老婆為了讓家裡的小朋友吃得更健康,從圖書館借了一本叫做「吃當季盛產,最好!」的書。有天,她請我幫忙掃描書後面的當季食材列表出來,以便去市場買蔬菜水果時可以隨時參考。

掃描時我一邊看著就來了興趣。不少人都可以隨口講出幾件台灣產的蔬菜水果,但是再進一步討論甚麼時候是 "當時"、"當令" 蔬果,可能連老一輩人也不一定答得出來。

於是搜尋了一些網路資料,發現農糧署有提供一些資料,但頗為凌亂,於是寫了些腳本,將台灣產的蔬菜水果分月份整理出來,貼上 Facebook 與朋友分享。

在整理之前,是我太少去買蔬果吧,我不曉得台灣產的水果中,其實只有「香蕉」才是一年四季皆有出產的水果。而平常聽到的「空心菜」、「火龍果」等蔬果,在官方資料中是叫做「蕹菜」、「仙蜜果」這類聞所未聞的名字。

最後我將這些不常見的叫法替換成慣用的蔬果名稱,補上一些來自維基百科的圖片,用 Cordova + JQuery Mobile 將整理好的結果包成了 Android APP,放到 Play Store 上讓大家方便參考。開啟 App 的時候會自動列出當月的食材,除了可以按月查詢之外,也可以查詢四季皆出產的蔬果。

台灣當季蔬果 App 可以直接從 Play Store 下載。 Get it on Google Play

· 7 min read

2013/1/10 早上收到 Play Store 來信,台北捷運地圖App 被下架了,原因是 Alleged copyright infringement(也就是侵權)。對這結果就法律而言我沒甚麼好抗議的,畢竟這個 App 確實利用了捷運公司所提供的地圖。

但即使這個 App 是在政府意識到 App 對民眾的價值前,為方便民眾查詢,提供純公益性質 (有清楚標示版權與來源,無廣告,純便民) 的 App,也會因依法行事被台北捷運局舉報。不分善意惡意直接一棒下去,實在是會讓想在政府動起來前先做些什麼的人心灰意冷。

我一直為自己利用業餘時間,能用自己的技術做公益 (Open Source、App),並從中得到樂趣與技術的精進感到自豪。

這些年,這 App 累積了 26 萬人次下載,12 萬實裝次數,也至少有為社會做了點貢獻。

PS: 做台北捷運地圖時,我也順手做了一個高捷版的,現在因為北捷運局的好心督促,我決定幡然悔悟,用更高的道德和法律標準做事情,先自我審查下架了。

Update 2013/1/12: 今天有點時間,我想還是再多聲明一下

1. 使用到版權物就是侵權 2. 公益不是侵權的正當理由 3. 這個 App 已經達到它的階段使命,在沒有好工具的時候得自己做一個,而現在 Market 上已經有不少可用的地圖 App,不差這個了。我不會多花時間重做地圖再上架,或作其他處理。

就我粗淺的想法來看,如果有人拿我出版的紙書轉成 PDF 讓人四處免費下載,想必我不會舒服。但是我卻很歡迎大家把電子書版網址分享出去(電子書版網址上有加創用 CC,聲明不歡迎商業使用或轉載,只歡迎連結分享。),因為可以幫到一些人入門 Android。而等他們有能力時,可能還會去買一本書,或把這個有用的資源分享給別人。

當初會做這個捷運 App,一方面是方便自己,方便別人;另一方面對捷運公司而言,如果有人免費印刷捷運地圖送給旅人,讓大眾可以隨時查找附近捷運站與目的地站點,提昇搭乘率,可以讓公司賺更多錢又省下推廣成本。

如果人家對此不稀罕,那也不用貼人家的冷屁股。

Update 2013/1/11: 因為網站也下架了,來為這 App 做一下回顧好了

下載

 26 萬人次下載,12 萬實裝次數

評價

五星評價 383 四星評價 471 三星評價 76 三星評價 20 一星評價 32

評論

看評論非常有趣,一些人覺得沒價值的東西,在另一堆人眼中卻十分實用。

五星評論

2012 11/23 非常實用 沒有廣告,沒有其他複雜的功能,打開快速不會造成手機的負擔,其實 app 像這樣簡單就很好用 10/26 以後出門忘記捷運坐到哪一站,有了這程式都不怕! 10/23 超簡潔 很簡單明瞭,很小巧不到 1Mb,完全不必特殊受權。好! 10/2 為了新的捷運路線下載 只要能正常使用就好了。沒有任何權限真是好! 1/12 把其他複雜的下拉選站名,路線規劃的 app 刪掉了,其實我只要這樣一張捷運圖就好.  1/6 非常實用 簡單的東西有時候是最好用的東西 2011 10/14 好用 對不是住台北的民眾是非常方便明瞭的  8/16 很方便 一張地圖正是我的需求~ 單點放大也很好用 1/31 正好符合我需求,一張圖就好,簡簡單單 2010 10/10 好方便啊!簡單又直覺的設計!

一星評論 2013 1/8 只是一張圖 好歹也整合一下出口及票價吧,只是張圖的話自己下載不就好了,說好用的人要求會不會太低了? 2012 12/15 就一張圖? 4/23 根本不用做成程式 只要放張圖就好了。 2011 2/10 無聊的東西,只是張照片 1/29 一張捷運路線圖罷了 2010 10/31 縮放功能很不方便,只有一張地圖要幹嘛

被檢舉資訊(隱去人名)

AutoDetectedBrowser: Google Chrome
AutoDetectedOS: Windows XP
IIILanguage: zh-Hant
IssueType: lr_dmca
Language: zh-Hant
agree1: checked
agree: checked
android_app_developer_1: gasolin
android_app_name_1: 台北捷運地圖 Taipei Metro Map
android_app_url_1:[https://play.google.com/store/apps/details?id=com.gasolin.droid.metrotaipei&feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5nYXNvbGluLmFuZHJvaWQubWV0cm8udGFpcGVpIl0](https://play.google.com/store/apps/details?id=com.gasolin.android.metro.taipei&amp;feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5nYXNvbGluLmFuZHJvaWQubWV0cm8udGFpcGVpIl0)
companyname: 台北大眾捷運股份有限公司
country_residence: TW
description_of_copyrighted_work: 「台北捷運地圖 Taipei Metro Map」未經本公司授權許可,逕自使用本公司之路線圖。
location_of_copyrighted_work: 「台北捷運地圖 Taipei Metro Map」這支APP內容直接使用本公司之路線圖。
represented_copyright_holder: 楊xx
signature: 許xx&nbsp;
signature_date_day: 14
signature_date_month: 12
signature_date_year: 2012