2010年5月21日

在 Android 2.2 Froyo 上開發者應該注意的事

froyo-android.png昨天是 Google I/O 大會的第一天,早上一起來就被 Day1 的部份 Session 嚇到說不出話,不是恐慌,是超級興奮。Google App Engine、GWT 這兩個一直有接觸的 Product 都有更新,而且是大幅更新。加上其他大大小小的更新,一天的時間根本來不及消化。

睡覺前照例打開 Google Reader 就收到 Android 2.2 SDK(Froyo) 發布的消息,不意外,但也來得太快了,本想說今天 Android Session 後才會發布,沒想到 Session 開始前就發布,大概可以猜出來今天又是熱熱鬧鬧的一天。

早上打開 Google Reader 前就有被 Android 2.2(Froyo) 攻佔版面的心裡準備,果不其然,十篇文章中有五篇是跟 Android 2.2(Froyo) 有關的報導,趕緊上官網下載新版本順便瞧瞧改了什麼。

一些新聞媒體會報導的改變就不說了,這裡主要是 Focus 在開發者應該會有興趣的改變。

版本更新

隨著新版本的發行,SDK Version 從 2.1 跳到 2.2,API Level 從 7 跳到 8。

有下載新版 SDK 的人應該會發現,存放 SDK 的資料夾,以往是以 SDK Version 做為資料夾名稱,現在則改成了 API Level。這跟當初 Java 在 1.5 的時候改名為 Java 5 有異曲同工之妙,Java 的說法是 5 比 1.5 看起來較威,難道 Android 改成 8 除了比較威,另外一個原因是為了壓過 Windows Mobile 7.0 跟 iPhone OS 4.0 嗎?
2010-05-21_132456.png

App2SD

眾所期盼可以安裝 App 到 SD card 上的功能在 2.2 上實現了,使用者在設定應用程式管理應用程式內可以看到新版本採用 Tab 區分不同類型的 App(以往是要按 Menu Key 選不同的 Filter 過濾出要看的 App),多了一個於 SD 卡的 Tab。
2010-05-21_141224.png

點選 Ap 後可以在手機內部記憶體跟 SD card 間自行搬移 App 存放的位置,前提是 App 要允許能夠安裝在 SD card 上。
2010-05-21_141335.png

為此,新版本 SDK 在 AndroidManifest.xml 內新增了 android:installLocation 屬性讓開發者決定程式是要安裝在內部記憶體還是 SD card 上,其值可以是 "internalOnly"、"auto"、"preferExternal" 三選一,但注意看 preferExternal 的說明

The application prefers to be installed on the external storage (SD card). There is no guarantee that the system will honor this request. The application might be installed on internal storage if the external media is unavailable or full, or if the application uses the forward-locking mechanism (not supported on external storage). Once installed, the user can move the application to either internal or external storage through the system settings.

但該做的事還是沒做,對開發者來說,Android 上並沒有一個很好的防盜版機制,雖然說 forward-locking 是防心酸的,但聊勝於無。現在安裝在 SD card 上的 App 連這一點點的小保護都拿掉了,這會讓更多開發商不想進入 Android 上阿。App2SD 對使用者來說是天大的好事,但開發商要的是防盜版機制,Android 快點拿出來吧。

雲端備份

這個功能真是太讚了,以往使用者重新安裝 App(非更新 App,更新 App 資料不會遺失),之前存在 Preferences 或內部 Cache 的資料會不見,如果要做到重安裝後還能保存之前的資料,要開發者自行處理。(嗚~我處理過)

現在備份這件事 Google 幫你作掉了,對開發者來說只需要撰寫一隻 Class Extend BackupAgentBackupAgentHelper,在程式內說明你要備份什麼資料,然後在 AndroidManifest.xml 設定一下 android:backupAgent,讓系統知道這隻 App 有備份功能。

需要備份時呼叫 BackupManagerdataChanged(),系統會在適當的時機呼叫你寫的備份 Class,然後把資料傳上 Google 自己的 Server。

當使用者重新安裝時,系統會自動把 Server 上的資料還原到手機內,背後的備份機制開發者完全不用理會,指定好要備份的檔案即可。

這功能還是 by User Account 的,用戶換手機後可以還原同一份資料,除非手機版本差異過大無法還原,照 Google 的說法,使用者完全感覺不到備份跟還原的存在,如果是這樣 User Experience 會非常好。

參考:Data Backup

OpenGL ES 2.0

在今年三月釋出的 Android NDK Revision 3 中已經支援 OpenGL ES 2.0,不過對於不會寫 C 的開發者來說,這功能離真正應用稍微遠了點。現在 SDK 內新增了跟 NDK 內的 OpenGL ES 2.0 直接對應的接口(稱 Wrapper 好像比較恰當),Java 開發者可以無痛直接呼叫 OpenGL ES 2.0 來使用。

效能應該會比原生 C 語言差一點,不過可以用、開發快速最重要,開發遊戲的人應該很高興看到這一點。

語音辨識

對提供語音辨識的廠商來說,新版本 SDK 允許第三方應用程式以 Plug-In 的方式,透過 RecognitionService 加入自己的語音辨識引擎。

以往在 Android 內有語音辨識需求時,都要打開某個 App 才能使用,例如 Google Voice 或是 Voice Go,現在則是可以讓使用者設定喜歡的語音辨識引擎,當有辨識需求時系統會自動呼叫辨識引擎,等於是主動幫你打開 App 使用。

原有舊版本在設定中的文字轉語音則被改成語音輸入裝置與輸出裝置,裡面整合了原有的文字轉語音語音輸出裝置)以及新加入的語音輸入,如果手機安裝了第三方的語音辨識引擎,就會出現在這裡。

這是安裝了 Android Sample Code 中的語音辨識引擎範例後的樣子(語音辨識引擎範例在 SDK 目錄下的 \samples\android-8\VoiceRecognitionService
2010-05-21_151114.png

對 App 開發者來說,當有語音辨識需求時,直接傳送 RecognizerIntent 給系統,系統會呼叫適當的語音辨識引擎來辨識,辨識完再把結果透過 RecognitionListener 回傳給 App,多美好的畫面阿,賽微科技,衝阿。

PS: 賽微科技已在 Android 上發表語音辨識輸入法(賽微輕鬆說)跟應用軟體(Voice Go),個人使用過覺得辨識度已經很好,去下載來玩玩吧。

強化的照相機

新版本 Android 提高了拍照時預覽的畫面更新率(Framerate),從 10 幾 FPS 增加到 20 幾 FPS,不過這只有拿到實機時才能驗證了。

另外新的 Camera Class 允許程式控制預覽時的 Zoom Level(呼叫 startSmoothZoom()),或是使用者改變 Zoom Level 時透過 OnZoomChangeListener 主動通知 App。

預覽時畫面的方向也不再固定是右撇子順手的橫向,可以透過呼叫 setDisplayOrientation() 來改變,有 0、90、180、270 四種可選。

Camera.Parameters 則提供了更多參數可以設定給 Camera 或是從 Camera 取得。還有 ThumbnailUtils 這隻小工具可以替圖片、影片產生縮圖。

放大縮小手勢

在支援 MultiTouch 的情況下,用戶最常使用的應該是用雙指來放大縮小螢幕上的圖片或網頁,以往都要自己寫程式碼來偵測放大縮小,現在新版本 SDK 新增 ScaleGestureDetector 讓開發者直接引用,不需要再自己寫啦。

原始碼在這,不知道有沒有人要改寫成支援 SDK 1.5 的版本,也就是第二指的 X、Y 座標是透過 MotionEvent.toString() 取得的版本,造福大家。

莫名其妙

ViewGroup.LayoutParamsfill_parent 被 deprecate,改成使用 match_parent,雖說 fill_parent 還是可以繼續使用,但沒事改這幹嘛?

Bug 回報

現在程式開發人員可以在 Developer Console 中看到自己程式的 Bug Report 了,這非 2.2 開發的程式限定,不管任何版本的程式都可以使用,主要是 Android 的手機都有一隻叫 BugReport 的系統程式在背景執行,

這對開發者來說真是一大福音,雖然無法精確到是哪個使用者做什麼動作造成的,但起碼可以知道程式是不是有發生大問題。如果還能看到使用者的評論跟線上回覆的功能就真的太美好了(做夢中)。
2010-05-21_162826.png

最後

Android 官網上關於 Android 2.2 更新的網頁中,跟開發者比較有關的是 Android 2.2 Platform 這一頁,文中大部份都是從這頁中擷取出來。有一些本身比較少遇到的 Topic,例如 MediaDevice policy managerAccounts and sync 就沒特別拉出來說明。

官網上的許多文章也隨著新版本釋出同步更新,Android Blog 中也有一篇介紹了這次的更新,那些都值得開發者一看。

這次新版本發表,扣掉這些跟開發者比較有關的項目,使用者應該也能很明顯感受到改變,Froyo 加入了 JIT Compilation、瀏覽器換上 V8 Javascript Engine,速度都大幅增加,光是這兩點就值得更新。

軟體 OK 了,接下來換硬體,會是搭載 Froyo 的手機先上市,或是 Nexus One 會先更新呢?Nexus Two 快出現吧

2010年5月14日

感謝 Google 你贈送的 Nexus One 收到了

DSC09379.JPG

感謝 Google,上週五收到贈送給開發者的 Nexus one 了!

之前在Google 拉攏開發商 免費賺到一隻 Nexus One中有提到 Google 寄信給開發者說他們要贈送 Nexus One 或是 Droid,當時是 3/3,後來 Google 也回信說二到四周會寄到。

等阿等,一個多月過去了,每天期盼有人來按門鈴但就是沒有,五月初終於忍不住寫信去問看看,翻開之前的信才發現,我寫給 Google 的電話號碼打錯了,心想該不會是這個原因,所以拖到現在都沒收到。

抱持著戒慎恐懼的心寫信給 Google 說我電話號碼打錯了,順便諂媚幾句我真的很想要手機之類的場面話。Google 很快速的回信,只提到我的手機已經在運送中,順便給了一個 FedEx 的 Tracking Number,連聲 Thank 都沒說,大概是被我填錯電話號碼這麼久以後才發現感到不耐煩吧。

管他的,知道東西已經寄出來就好辦啦,上 FedEx 查了一下,4/28 號從荷蘭寄出,4/30 到桃園機場,但已經卡在海關好幾天,總覺得海關是個很神秘的機關。第一次收到卡在海關的國際包裹,加上手機需要一些特殊的通關程序,卡個幾天應該是正常的。

過了兩、三天信箱又收到之前回信給我的那個 Google 員工的信,說 FedEx 聯絡不到我,如果我還要手機的話,叫我主動聯絡他們。擔心的事情發生了,真的是聯絡不到我以至於無法報關。

早上 8 點 FedEx 的服務電話開始時間一到,馬上撥去報告詳情,台灣人果然比較和善,跟我說的確是有人聯絡不到我,所以包裹才卡在海關那好幾天,晚點會有另外一位工作人員跟我聯絡。

11 點左右有位在機場負責報關的 FedEx 員工打來,態度非常和善,一直說不好意思,因為聯絡不到我所以包裹被拖延了好幾天。其實是我該說抱歉才是,手賤打錯電話號碼給人家添麻煩。在他的說明下,用最快的速度把他寄來的通關文件簽名、影印後寄回去,不到半個小時,他再度打來說包裹已經從海關領出來,下午會送到,折騰了好久終於聽到好消息,有燒香果然有保佑。

送到後二話不說先開箱再說,雖然已經開過一次 Nexus One,但再次開箱還是有種臨聖的感覺。Google 很貼心的附上一份文件表達謝意(應該是開發者要說謝謝吧)跟說明如何使用這隻手機。
DSC09367.JPG

DSC09370.JPG

DSC09371.JPG

仔細看外面的寄件人,是一家叫 BrightPoint 的公司寄出,上網查了一下原來這家公司是家全球通路商,主要專精於無線通訊產品的販售,在 2007 年跟 HTC 結盟,Nexus One 是 HTC 製造,因此委由 BrightPoint 負責送貨也不足為奇。
DSC09361.JPG

台灣製造,但是卻從荷蘭寄出,繞過半個地球,經過巴黎、廣東回到同一塊土地,何苦勒。看 FedEx 的運送紀錄更有感觸。
DSC09373.JPG
2010-05-15_005848.png

最後,還是要再跟 Google 說謝謝,用一隻手機換一個開發者的心,划算啦。

2010年5月4日

2010 甜心卡超值選分析 附帶 Android 隨身超值選擇器

2010 甜心卡開賣囉~
時間好快,2009 甜心卡已經發行了一年,又到了新版甜心卡的發行月份,照慣例先來分析一下,2010 甜心卡是變得更超值還是內容縮水了。

封面

在還沒翻到背面看 A、B 區之前就感覺的出甜心卡變了,是封面嗎?對,是封面(廢話,封面當然會變)。從 2008 年、2009 年的冰那堤冰炫風為主角,今年改成 Q 版的麥當勞叔叔(還是該叫迪迪)當封面,不再以商品為主角,用 Q 版人物當主角讓整張卡片變得比較可愛,會讓人有想收藏的念頭。

不過...難道是麥當勞要學 –4 的 OPEN 將行銷手法,自己也來弄個嗎?每次點餐送點數,集滿多少點換!?如果是這樣就還好,但千萬不要學 –4 的 iCash,搞一堆甜心卡讓用戶收集,一年一張就好,拜託。

2008
2008-06-07_140222
2009
2009-04-24_224057.png
2010
2010-05-01_010310.jpg

$價錢

封面變了只是視覺受影響,沒啥大不了,重點來了,但接下來的這個改變,影響到你我的荷包,是的,甜心卡取得的價錢變貴了

  • 搭配套餐從 20 漲到 25 元
  • 單賣卡片從 45 漲到 49 元

從發行以來一直維持搭配套餐 20 元、單賣卡片 45 元的定價,今年終於漲價了。對於漲價這種事,經過 2009 後大家應該都見怪不怪,對於店家要漲價,什麼理由都聽過,漲多漲少誰沒碰過。

對於甜心卡漲五元我認為還可以接受,大不了在這一年內多去買一次賺回來就是了。不過如果漲價後兌換的內容物還縮水,那就真的會讓人奇檬子不爽。

內容

接下來就好好的來比一比 2010 年的甜心卡到底有哪些不同。

  • [A 區] 日式綠茶消失了:應該是之前大腸桿菌事件,全面下架了吧
  • [A 區] 漂浮系列重出江湖:對於喜愛喝漂浮咖啡的我,是個好消息
  • [A 區] 中杯焦糖熱奶茶跟著重出江湖:消失一年再現,不過我從沒喝過
  • [A 區] 熱食選擇變多:二份蘋果派 → 大杯玉米湯、香酥派+小薯
  • [B 區] 新冰品加入:蛋捲冰淇淋入列

另外附上這三年來的甜心卡內容讓大家自行比較,甜心卡是進化了?還是退步了?

2010
買 A
大杯汽水
雀巢檸檬紅茶
冰炫風
漂浮系列
汽水系列
檸檬紅茶
冰咖啡
冰奶茶
冰那堤/冰亞美利加諾
焦糖冰奶茶
冰咖啡
大杯玉米湯 一個香酥派+一份小包薯條
(上午10:30後供應)
那堤/卡布其諾
亞美利加諾
中杯焦糖熱奶茶
送 B
大杯可口可樂
可口可樂zero
雪碧
大杯雀巢檸檬紅茶

聖代
蛋捲冰淇淋

冰咖啡 小杯焦糖熱奶茶 小杯經典美式咖啡
熱巧克力
熱紅茶

2009
買 A
大杯汽水
冰檸檬紅茶
冰日式綠茶
冰炫風
法式焦糖脆片
OREO
冰那堤
冰亞美利加諾
二份蘋果派 焦糖冰奶茶
冰咖啡
那堤
卡布奇諾
亞美利加諾
送 B
大杯冰檸檬紅茶
冰日式綠茶
巧克力聖代
草莓聖代
大杯可口可樂
可口可樂Zero
雪碧
冰咖啡 焦糖熱奶茶 美式咖啡
熱巧克力
熱紅茶

2008
買 A
大杯汽水
冰檸檬紅茶
冰日式綠茶
冰炫風 漂浮系列
可樂系列
雪碧
檸檬紅茶
日式綠茶
冰咖啡
冰奶茶
冰那堤
冰亞美利加諾
焦糖冰奶茶
冰咖啡
二份風味派 那堤
卡布奇諾
亞美利加諾
焦糖熱奶茶
大杯玉米濃湯
送 B
大杯可口可樂
可口可樂Zero
雪碧
大杯冰檸檬紅茶
冰日式綠茶
巧克力聖代
草莓聖代
冰咖啡 焦糖熱奶茶 美式咖啡
熱巧克力
熱紅茶

超值選

2010 甜心卡各品項價錢如下,打*表示價格依所在區域不同而有所變化,僅列出最高價。

除了封面、價錢改變外,有樣東西一樣沒變。由表中看來,今年甜心卡的超值選依然是 A 區大杯汽水或大杯雀巢檸檬紅茶 搭配 B 區冰咖啡獲選,花費 35 元享受 75 元的品項,連續三年蟬聯冠軍,啾竟明年會不會有新的變化呢,讓我們拭目以待。

2010
買 A
$35大杯汽水
$35雀巢檸檬紅茶
$49冰旋風
漂浮系列
$40汽水系列
$40檸檬紅茶
$45冰咖啡
$45冰奶茶
$65(中)$80(大)冰那堤
$55冰亞美利加諾
$40焦糖冰奶茶
$40冰咖啡
$49大杯玉米湯 $25香酥派+$29*小薯
(上午10:30後供應)
$55(小)$65(中)那堤/卡布其諾
$45(小)$55(中)亞美利加諾
$40中杯焦糖熱奶茶
送 B
$35大杯可口可樂
$35可口可樂zero
$35雪碧
$35大杯雀巢檸檬紅茶 $25聖代
$15
*蛋捲冰淇淋
$40冰咖啡 $30小杯焦糖熱奶茶 $30小杯經典美式咖啡
$30熱巧克力
$30熱紅茶

BUG

既然超值選沒變,那一直以來的冰咖啡大杯汽水大杯檸檬紅茶的 BUG 也沒變,依然存在,維持歷來的傳統。

  • A 區的冰咖啡搭配 B 區的大杯汽水、大杯檸檬紅茶要價 40 元
  • B 區的冰咖啡搭配 A 區的大杯汽水、大杯檸檬紅茶要價 35 元

同樣的商品,換區購買後價錢省了 5 元,從 2008 發行的第一代甜心卡就有這個現象直到現在,過了這麼久應該不能說是 BUG,應該說是行銷手法比較恰當。甜心卡總是要有一點特殊的地方讓人討論,製造話題性,才能自我行銷。就像這篇文章不也是掉進了同樣的陷阱,在幫甜心卡曝光,不過先聲明這只是純粹的使用者心得分享,我跟麥當勞的關係僅止於有時候肚子餓會想起他的程度。

另外 2010 年的甜心卡多出了一個小 BUG,不過這不影響你我的權益,看看就好,那就是冰旋風打錯字了,應該是冰炫風才對,也許今年美編換人了吧,沒注意到。不過去 Google 搜尋,冰旋風竟然還比冰炫風多了一倍,積非成是的最好寫照,反正大家知道在說啥就好,無傷大雅。
2010-05-04_063626.png2010-05-04_063652.png

Android 版甜心卡超值選擇器

android.png

icom.png

今年的甜心卡超值選擇器新增了 Android 手機版,使用 Android 手機的人可以去 Android Market 搜尋「甜心卡」下載,或是去官網瞧瞧。

Android 手機版除了有跟網頁版一樣的超值選擇器外,另外還利用手機的 GPS 定位功能,讓你以最快的速度在地圖上找到最近的麥當勞,出門在外旅遊必備小品,下載來試試看吧。

網頁版甜心卡超值選擇器

當然網頁版也不會被遺棄,2009 年版似乎壞掉了,不過沒關係,2010 年改版後再出發。希望大家能多利用甜心卡買到自己喜歡的飲品又省下荷包~

Related Posts Plugin for WordPress, Blogger...