把 HTC M8 刷成 Google Play Edition (GPE)

先說重點:

  1. 你會失去保固!
  2. 刷機有風險,本文不保證一定會成功,刷完有可能開不了機,請自行評估是否能接受。
  3. 由於兩者的 partition 切法不同,刷成 GPE 之後,目前無法刷回 M8 Sense 的 ROM。
  4. 刷成 GPE 之後,更新會變快,會是原生的 Android 體驗。
  5. 可以進行 OTA
  6. 所有的 HTC 程式會被移除,但如果有保留 APK 的話,可以重新裝回去,也可以正常使用。
  7. Dotview 可以正常使用
  8. 升級到 Android 5.0 之後,介面變得真的很棒,而且在畫面切換的小細節也都有注意到。

在開始刷機之前,你需要:

  1. 一台電腦,裝有最新版的 adb
  2. 一隻 HTC M8,需要 S-OFF。目前 M8 + Android 4.4.4 以上尚未有免費的 S-OFF 方案,這部份需要付出一點成本

刷機的方法:

  1. 先把 cid 改為 11111111 (supercid)。
    < fastboot oem writecid
  2. 按照 xda 這篇,下載 GPE 的 RUU,但先不要安裝。
  3. 解開 RUU。
  4. 因為我們的手機是台灣版的,radio 驅動與美版的 M8 不同,所以要事先備份 radio 下來,取代 RUU 內的 radio,或是到 xda 這篇 下載台版的 radio。這篇也有其他地區的 radio image 可以下載。
  5. 取代完 radio 後,重新壓縮成 zip 檔案,接著就可以開始刷機了。
  6. 刷機第一次會失敗,直接重刷一次即可。
  7. 刷完之後,開機就會是 GPE 版本的 M8。接著還需要再把 cid 改成 GOOGL001,才能進行 OTA。

其他資訊,可以找 xda 論壇,有許多相關文章可以參考 :-)

OpenVPN Connect on iOS / Android

OpenVPN 在上個月推出了 OpenVPN Connect for iOS ,連同去年推出的 OpenVPN Connect for Android,算是把產品線補齊了。今天趁過年假期,裝起來測試了一下。

先來張截圖:

設定時要注意的地方:

  • 如果要用帳號密碼認證,Client 的 .ovpn 設定檔除了要加上auth-user-pass以外,還要另外加一行:setenv CLIENT_CERT 0
  • root / intermediate CA、憑證與 Private Key 可以使用以下格式直接放在 .ovpn 檔案內:(Private Key 建議放在 Keychain 內,或是設定 client-cert-not-required

    <ca>
    —–BEGIN CERTIFICATE—–
    DlDCC…
    LMlZ=
    —–END CERTIFICATE—–
    </ca>
    <cert>

    </cert>
    <key>

    </key>

  • 先讀完 FAQ 再進行設定會省下很多時間

優點:

  • 免費的 SSL VPN(Server 是 GPL License)
  • 支援帳號密碼認證,也支援 2 Factor Authentication
  • 可以走 TCP 也可以走 UDP
  • 可以吃 Android / iOS 內建的 Keychain
  • 支援 IPv6

缺點:

  • 需要手動匯入 .ovpn 設定檔。Android 設備可以直接放到 SD Card 或是 Dropbox 裡面,但是 iOS 設備需要用 iTunes 或是 Mail App 匯入(不能用 Gmail App,一定得用內建 Mail App),麻煩不少。
  • Android 版本在通知欄會出現兩個 ICON

Nexus 7 的 NFC

如果可以讀悠遊卡內的詳細紀錄,對於記帳來說應該更方便。

一直知道 Nexus 7 有 NFC 功能,不過除了內建的 Google Wallet 之外,一直都不知道有什麼應用,直到有天看到了 NFC Tag Reader 這個 App,就到處去找 Tag 來掃。

悠遊卡是有加密過的,所以什麼都讀不出來:

據說北捷的單程票 Token 沒加密,不過我並沒有親自試過。

日本的 Suica 卡倒是可以讀出來,用 Suica Reader 還可以列出詳細資訊:

晶片護照也有加密,不過只要輸入個人基本資料就能解密:

高捷卡也有加密,所以也是什麼都讀不出來。
其他國家的卡就有待之後去旅遊的時候再來收集測試了 :)

台灣高鐵 T-Express Android 版的 UI …

用過 iPhone 版的 T-Express 還覺得沒什麼,前陣子換了 HTC One S 之後改用 Android 版本的,裝起來也太醜了一些……


一整個 iPhone Style… (Android Style 的 Tab 會在螢幕上方)


右上角的「時刻表查詢」應該改用實體按鈕達到同樣效果。硬要自己排出來,造成的結果就是在不同解析度的手機上排版會爛掉。


明明 Android 就有 Native 的選單元件……自己刻又費工又難看。


製作人員辛苦了(合掌) 有時候這種外包案,製作的人確實沒辦法表示什麼意見,只能期待業主能聽進專業意見了。

如果想了解 Android 的 UI Design Guideline,可以到 Google 提供的 Android Design 頁面看看。另外也有非官方翻譯的簡體中文版

從 Delicious 改用 Pocket

自從入手 Nexus 7 之後,看 RSS Feed 的工具就從電腦改成 Android 平版了。7″ 的大小不會像手機一樣看到眼睛脫窗,也比 iPad 適合在捷運上單手手持。而 NewsRob 的背景同步功能則讓我不用每次出門前按下同步按鈕,只要把 Nexus 7 塞進包包就能出門。

不過,因為 Nexus 7 不支援 3G,如果看完要記下來,就沒辦法直接存到 delicious。用 Google Reader 的星號功能是一個解法,但是沒辦法下 tag。

能夠下 tag 又能離線存取的服務,之前試過 pocket (以前叫做 read it later) 還蠻好用的,因此就選它啦。離線紀錄下來的 URL,在回到有網路的地方時,會自動 sync 回去 Server 中。

pocket 也有提供收錄文章列表的 RSS Feed,預設是需要輸入密碼的,但可以在設定裡面改成公開(不需密碼)。我的 Feed 在 http://getpocket.com/users/jnlin/feed/

除了自己 Server/NTP Server 的時間外,其他的時間都不應該相信。

作手機 Client 的人應該常常遇到這種問題:User 因為某些原因(像是常常賴床起不來),把手機的時間調快了 5 分鐘。如果用的又是 OAuth 這類會有 expire 機制的 Protocol,就會遇到認證失敗的問題。

一般的解決方法是,利用一台「時間準確」的 Server,提供正確的時間。可以透過 HTTP Header(可以少一個 request),也可以透過一個 API,例如:http://emma.pixnet.cc/index/now。最近的 Google Authenticator 也有類似的機制。

不過,不只是 Client 會有這樣的問題。雖然 NTP 已經很普遍了,但總是會遇到因為設定錯誤,或是防火牆擋掉,或是 blah blah 等等的原因,導致 Server 時間跑掉的情形。當然,也有可能是軟體 Bug 造成的問題,導致 Server 傳回的時間是錯誤的。

最近就遇到這樣一個好玩的現象:寫 Parser 的時候,會看一下 Server 給的 Last-Modified 的 header 來判斷是否要 invalidate cache,結果發現有的 Server 會回傳未來時間…XD

所以,如果你的 Server 有跟 NTP Server 定期對時的話,應該使用自己 Server 的時間,其他任何外部來的時間都不應該相信,一定要檢查合不合理。

HTC One S 使用一週後感想

購入 HTC One S 也超過一個禮拜多一些了,也慢慢適應了 Android 4.0 (ICS) 的一些修改,大概整理一下到目前為止的心得感想。

重量與厚度


HTC One S 比之前使用的 HTC Desire 輕很多,也薄很多。金屬背蓋的感覺很讚。

本來以為灰色會不好看,結果實際拿到手上,還蠻不錯的。比褐色 Desire 好看多了。

螢幕


4.3 吋的螢幕,對我來說還是有點大。單手操作還勉勉強強。One X 的 4.7 吋對我來說應該是太大了。之前的 Desire 也是使用 Amoled,用了兩年多沒有遇到所謂的烙印問題,所以這次的 HTC One S 使用 Amoled 對我來說是沒差的。

容量

Desire 的 512MB 內部儲存空間真的是悲劇…HTC One S 雖然內建 16GB Flash,但是切分成 2GB(內部儲存空間)與 14GB(外部儲存空間)。2GB 的儲存空間目前是夠用的(我大概裝了 97 個 App,然後 Gmail 佔了快 100MB XD)

相機


白天的相機品質很不錯,可以替代一般的數位相機了。

晚上與室內的拍照品質就勉勉強強,可以看到顆粒狀還是很明顯。

電力

在普通使用狀況(大概每 20 分鐘拿出來收 Email、接電話),一個早上使用約 30% 電力。對我來說,一天充一次電是可以接受的。
我有裝 2x Battery,可以延長使用時間。

使用體驗與速度

HTC One S 在台灣上市之前,鬧的沸沸揚揚的 CPU S4 換成 S3 事件,本來我在購入之前也很擔心。不過實際使用上,倒是還好。我不會想要跑所謂的 benchmark,而是以使用中的順暢程度來比較,我認為是可以跟 iPhone 比的。RSS Reader(我用 NewsRob)一邊更新的時候,用起來會頓頓的,但如果更新完了就很順。

VPN

ICS 終於支援 Cisco/Juniper 的 SSL VPN 了!這真是太 cooooooool 了。

Adobe 在 Flash Media Server 裡支援 HTTP Live Streaming

在 NAB 裡面,Adobe宣佈在 Flash Media Server (FMS) 裡支援 HTTP Live Streaming (HLS),也就是 iOS 用的那套 Streaming 方式。

因為 Android 3.0 也支援 HLS,不出意外的話應該會成為新的Streaming標準了。

Update: 不是 Apple ,Adobe 才對。感謝far

App Inventor 試玩心得

前幾日終於拿到之前申請的Android App Inventor邀請了,稍微玩了一下:

appinventor-2.png

介面像Visual Studio一樣,元件是用拖拉的。

appinventor-1.png

不過觸發的事件也是拖拉的,就如上面的方塊一樣。有種在組樂高積木的感覺XD

元件還不多,一個可以連網路的元件叫做 TinyWebDB,是一個Key-Value based 的 Network Storage Database。官方有API,除了可以用App Engine上的版本外,也可以自己寫一個。

另一個可以連網路的元件叫做Twitter…XD

此外一些基礎元件,像是WebView、OAuth或是RSS Feed都還欠缺,不過寫簡單的透過網路查(公開)資料的程式應該沒問題就是了…

實用的Android App: Auto Slience

以前用 Windows Mobile 手機最喜歡的其中一個功能就是在行事曆有活動的時間把手機自動轉成振動模式。自從開始用 Android 系統以後,雖然 Google 的 Gmail、Calendar 很好用,不過手機裡沒有內建這個功能,老是在開會或上課的時候響也很討厭……

本來一直找不到符合需求的App,打算自己寫了,今天居然給我找到了 Auto Slience 這個App:(下方是 Market 的 QRCode)

只要在行事曆裡需要把手機改為振動的活動主旨後方加上 [S] 或 *$*的後綴,Auto Slience就會自動在時間到的時候把手機改成振動!

不過 Auto Slience 採用定期檢查 Calendar 有沒有更改的方法,所以如果你新增的活動即將要開始,要手動去 Auto Slience 的介面強迫它馬上檢查。也可以設定檢查的間隔,但是最短只能設10分鐘。

另外,最近又發現AppBrain還蠻好用的……可以把常用的 App 記下來,這樣換手機的時候就不會忘記裝了。還可以把自己裝了哪些App分享給別人。不過 AppBrain 預設就是開放所有人可以看到自己裝的App,這點要非常注意。