Jaffe的分享空間 Rotating Header Image

Java日記

香港電視節目表 – 網頁版

當iphone及android版的香港電視節目表app已完成, 大概係時候完成最後部份… 就係網頁版…

其實, 做網頁版目的, 主要都係想吸引更多用戶使用iphone或android app… 所以網頁版會以最簡單形式推出…

只係可以睇當日節目, 同埋唔會有關鍵字搜尋, 更加唔會有節目提示功能 >_<

硬銷地附上app store同google play既download link, 希望用戶覺得岩用就一click即download黎用…

香港電視節目表 (網頁版) http://jaffeling.com/hktv

做個咁既website, 其實大概只係用左一個鐘左右… 希望google crawler幫下手, index左佢, 令到internet用戶搜尋”香港電視節目表”就可以搵到…

而家係16/4/2013 01:30, 唔知google幾時會crawl到我既呢個硬銷網頁呢?

即管計下時 ^_^ go!

(而家既頭位, 都係幾個其他歷史悠久, 或者係官方既節目表, 要爬越佢地, 就真係好靠SEO了… 努力!)
https://www.google.com.hk/webhp?oq=香港電視節目表

hktv epg web

Android 香港電視節目表 (四) – Google Play報錯機制

本來諗住update左套電視節目表app去support android 2.3後, 就暫時由佢run一段時間… 不過, 今日又發生左件事… 令我再花多15分鐘去攪攪佢…

我地做開application development, 最怕就係user遇到error, 但又feedback唔到俾developer知邊度有錯, debug無從入手… 特別係mobile device, 就算寫error log, 你都好難從user手機傳送返黎你度…

不過android既app有度好, 就係有報錯機制, 如果user遇到問題, 例如hang機或死機… android都會提供渠道俾用戶report返俾developer知…

當然, 匯唔匯報… 就係用戶既問題啦…

今日, 就有位熱心既用戶… 通過報錯功能, 將一個program bug話返俾我知…

當我打開google play console既”當機與ANR”功能, 我就好清楚見到exception detail:

sql_error

係一個非常大意既bug, 留左係program度… 不過慼住用戶send返黎既資料, 唔駛1分鐘fix返好, 連re-compile同重新上載去google play, 大概就用左15分鐘..

上載左個app只係短短3日, 我就漸漸愛上android development了…

比起apple, 真係方便好多… 如果呢件事發生在iphone app上… update一個bug只係15分鐘, 但要等application release approve, 就要等7-15日… 真係超低效率… 所以deploy iphone app真係要好小心好小心試清楚晒先submit! 否則個bug真係要爆足個幾兩個星期先可以update到, 後果好嚴重!

在此再一次多謝回報問題既用戶…

唔知係巧合定同一個人… 在用戶評價亦有一位用戶回報相同問題, 多謝晒!

app_user_comment
Thanks Filly FONG 及 報錯既那位用戶!(如非同一人) ^_^

Android 香港電視節目表 (三) – 用戶OS分佈

上篇講到新app推出後, 都收到唔少有建設性既comment… 當然會記在action list上, 打算有時間就改善…

但有一點, 在個app未出街前, 已經在我action list內高高在上… 不過個app一出街, 我就急急花多一晚時間, 趕埋個feature… 咁樣自己先可以安心放手…

呢個feature唔係乜野特別功能, 佢… 只係將套app由原本support android 3.0或以上, 改成support埋android 2.3.x既機種!

當初開始寫app, 冇太著數於support咩android version呢個問題, 因為基於時間問題, 想用最短最快既時間先放個app上架, 然後先再諗其他…

就係咁, 最快速度當然係用最新最快既api既寫… 咁先可以最快寫成個app, 當然, 後果就係相對用戶群就窄左…

點窄法呢?

原來, android用戶既分佈大致上可以分兩大類:

第一類) android 4.0 或以上 (佔近45%)

第二類) android 2.3.x (佔近40%)

我在開始寫app前, 都考慮過support晒兩個大類既用戶, 但可惜我個app需要用actionbar既class, 而呢個class只有android 3.0或以上api先提供… 基於要儘快完成既要求, 不得不先放棄一半用戶群來達至效果…

不過, 個app推左出街後, 發現朋友間都有不少仍停留在2.3.x既android系統…

突然, 就變左有無限大推動力促使我將個app改成2.3.x都可以行到, 去吸納埋剩餘既用戶群…

最初, 仲驚要用好多時間去重寫actionbar既部份… 但在google老師幫助下, 搵到坊間有套library, 可以完全做到晒actionbar既功能, 而且完全兼容原裝actionbar class… download套library後, 用左大約半日就成功將app改成android 2.3.x上都順利運行到… (算有點幸運!)

套library叫actionbar sherlock, 在此感謝作者jake wharton(http://actionbarsherlock.com)既傑作! thanks!

成功將app”downgrade”後… 而家已經從本來cover 54%既用戶, 上升至cover 94%既用戶… 可以講近乎覆蓋晒咁滯! 呢個問題, 真係解決得有點過份輕鬆… xdddd…

android_platform_distribution

一輪博殺後… 終於真係可以暫時放鬆一下, 先觀察一輪用戶反應吧… ^_^

Android 香港電視節目表 (二) – google play上架了!

電視節目表 – android版
(https://play.google.com/store/apps/details?id=com.jaffeling.tvprogramandroid)

雖然這個android版本”電視節目表”功能同iphone版本完全一樣, 但因為android版本係用java寫, 而iphone版本係用objective c寫的, 所以縱使program logic同大部份database/image/icon都用得番… 啲code始終都要由零寫起!

如果工作係興趣, 好自然就會沉迷同熱愛… 自3月18號install左google既adt (android developer tool) bundle後, 真係一日十幾小時都痴住部notebook… 不斷研究同開發…

上一次嘗試落手開發android, 已經係成年前既事… (當年)google ice cream sandwich – 4.0仲未流行, 市場仲係寫緊gingerbread – 2.3…

好清楚記得當時由download java sdk, eclipse, android sdk, avd同install完成開得工, 攪足半日先掂… 但今次從google download套adt bundle… uncompress落c drive即刻用得… 真係乾手淨腳, google抵讚!

hkepg_app_android

言歸正傳, 自從上年年尾手機轉左android後… 只在iphone上行既”電視節目表”, 連我(作者)自己都無得用!… 當時android有既”電視節目表”app有兩個(都係叫香港電視節目表 xdddd)… 我都有安裝… 但用過後, 我都係覺得略有不足, 可以做得更好… 不過似乎佢地(兩個app的作者)都已經停止繼續開發…

就係咁, 用下用下人地既野, 越黎越懷念自己寫嗰套… 漸漸地, 就激發左我在android上重寫”電視節目表”…

放低左沉重既工作, 完成左單車環台夢, 完成埋拖左近一年既PMP試… 在積極搵工前既少少空檔, 就立下決心積極將app寫好… 正所謂, 如果今次唔做, 唔知幾時先再有機會做了!

連續18日, 差唔多每日都對住電腦10小時以上… 期間重病過兩日… 終於在尋日, 開了個通宵後… 今朝一早將所有程序寫好晒, 試好晒…

註冊左個新android developer account (成USD $25!), 正式將個app上架了!

比起apple app store, 上google play真係方便一百倍… 唔需做要太多麻煩情序 (如app loader + 超長人手批核程序)

個app從upload至可以於google play上供公眾下載, 大概只需要 >>> 一個鐘!!!

真係本來打算執埋野去訓覺, 執完野已經發現個app上左架! 自己又去download玩一輪先捨得去休息…

從上架至打呢篇blog, 大概都12小時了… 收到一啲朋友對個app既comment, 而從中亦有點近啟發, 下篇blog再詳談一下…

2013-04-05_214926

有興趣睇下既朋友, 不妨到以下網址下載:

電視節目表 – android版
(https://play.google.com/store/apps/details?id=com.jaffeling.tvprogramandroid)

Android 香港電視節目表 – 程式開發紀錄

用左連續18日, 由零開始, 終於完成左成年前既目標… 就係將iphone既 “電視節目表” app移植到android上…

上年工作實在太忙, 放工差點時休息時間都冇… 無辦法擠出時間專心寫app…

今年趁仲有難得既悠長假期, 儘量做多點有意義既事吧!

希望快啲可以在google play見到我既電視節目表app出現吧!

(臨上架前趕左一個通宵, 而家係時候去訓下先 :p)

— 開發紀錄

05-04-2013:
完成android developer註冊及google play上架!

04-04-2013: (1 day + 1 通宵不眠不休)
broadcast receiver, connectivity manager

02-04-2013: (2 day)
病倒了! 原來頭痛真係寫唔到program的! :(

01-04-2013:
preference manager (1 day)

29-03-2013: (3 days)
alarm manager, notification manager

25-03-2013: (4 days)
backstack, asynctask, message handler, customized list view

21-03-2013: (4 days)
action bar, tablistener, fragment

18-03-2013: (3 days)
activity/intent navigation, listview, base adapter, sqlite database, xmlparser

再戰Java Programming!

對上一次寫java日記,竟然已經係一年前…

唔經唔覺,放低左java(亦即係學android programming)成年… 原因係之前公司太忙,忙到夜晚返屋企後根本提唔起勁去睇書,更莫講話坐定定在部腦前慢慢寫,慢慢試…

無返工後,可以做更多更有意義既事… 環台旅行,農暦年假,進修大考過後… 趁找工作前的空檔,重上寫app的學習軌道…

full time學習, 進度非常理想… 第三日已邁向web services運作…

原本利用XmlPullParserFactory, InputStreamReader, getUrlData, DefaultHttpClient, HttpGet已經完全可以存取我需要用的所有數據,但從今日12點開始,我就一直被個怪問題纒擾:

用XmlPullParser嘗試去解釋一個xml檔時,竟然不斷卡在一個exception上:

org.xmlpull.v1.XmlPullParserException: Unexpected token (position: @1:2 in java.io.InputStreamReader@410b7d70)

百思不得其解,因為同一個xml檔,利用xcode的parser可以順利地轉換為數據,但java的XmlPullParser就不能成功…

在網上做了一輪資料搜集,發覺亦有不少”苦主”, 亦是跟同我一樣遇到這問題,有些歸疚encoding,但我應該就唔係呢個問題…

呢個exception,大約意思就係XmlPullParser在xml檔內最開頭位置搵唔到需要既xml tag <?xml>,引致無法運作…

但我已經多番確定xml內容正確,檔案開頭肯定是<?xml…>

經不斷trial and error,竟然發現檔案第一個character真係唔係 “<” 字符 (<?xml的第一個字符)…

而係一個肉眼都睇唔到既character, ascii code係65279…

google真利害,一下就查到佢既身份… 原來呢個character係有名的… 叫byte-order mark (BOM)… 詳情就唔談論了… 但就係呢個字符,令到XmlPullParser唔能夠正常運作…

首要任務,就係諗方法點鏟除佢… 方法不外乎 1) 從原始xml檔內刪除 2) java讀入後刪除

但兩個方法,都各有疑慮… 第1)個方法,因為產生xml檔的程式仍然在運作(供data予iPhone電視節目表使用),所以胡亂改動有一定風險… 第2)個方法是因為不太熟java的class,所以仍需要更多時間研究…

所以,花費了近6小時… 仍然未找到解決方法… 趁休息時寫了這篇blog…

後記:

經過幾翻努力,在網上找到不少討論UTF-8 BOM既文章,可惜偏偏缺乏比較好既解決方法,終於在成鐘頭既重要搜索,搵到呢篇無乜解釋既source code,移值過自己program後,竟然真係解決到,在此嗚謝呢位作者! (佢應該唔識睇中文,就單簡講句thanks!吧,如佢有緣見到自己既source code在我blog出現)

http://android.svn.wordpress.org/tags/1.4.1/src/org/wordpress/android/viewStats.java

最重要既部份如下:

PushbackInputStream is = new PushbackInputStream(entity.getContent());

// get rid of junk characters before xml response. 60 = ‘<‘. Added
// stopper to prevent infinite loop

int bomCheck = is.read();
int stopper = 0;

while (bomCheck != 60 && stopper < 20) {
bomCheck = is.read();
stopper++;
}

is.unread(bomCheck);

pullParser.setInput(is, “UTF-8″);

呢段珍貴既code又帶我重回直路了…

寫program真係好有挑戰性, 途中一定會遇到困難,但刻服到嗰刻,個心又真係有無窮喜悅!

Eclipse + AVD 慢到想死!

開始學寫人生第一個android app, 但感覺得真差到極點…

是但搵左個hello world example黎compile + run, 點知… 只係load個android virtual devices出黎, 已經花左我差唔多5-10分鐘, 食個杯麵返黎仲係loading…

喂! 我真係接受唔到囉? 係我整錯野咋嘛? 自問部pc雖然係幾年前舊款p5, 但都唔係慢成咁嘛?

(load成5分鐘都係呢個畫面)

(佢慢到自己都以為自己死左? 叫我一手了斷佢)