2014/12/09

Google Play services 6.5: Selectively compiling APIs

Google Play services 升上 6.5 之後,其中一個特色就是多了阿文的次元切割功能,現在終於可以不用將整包 Google Play services 納入只為了使用其中幾種 API。舉例來說,之前為了支援 GCM 跟 Cast,我必須在 build.gradle 寫入:

現在我可以選擇性的只加入我需要的:

這樣就可以有效避免 method 數量超過 65,536 個上限的問題。

Reference:
http://android-developers.blogspot.tw/2014/11/google-play-services-65.html
http://developer.android.com/google/play-services/setup.html

2014/08/12

Cast menu, while casting

























前陣子在看 Google Cast Design Checklist 的時候,他推薦當你正在投射螢幕時,可以在 cast menu 上實作一些細節及簡單的功能操作,不過在 Android Sender App Development 沒有看到關於這方面的補充,所以好奇去翻了一下要如何做出這樣的效果,最後發現只要在 MediaRouteActionProvider 加上自訂的 MediaRouteControllerDialog 就可以了。

於是參考這張圖練習寫了個 sample :D

2014/07/31

Playing HTML5 video on fullscreen in Android WebView

















Android WebView 如果碰到 HTML5 的 <video> tag 時,雖然可以正常播放影片,但是點選 fullscreen 卻沒有反應。目前找到的解法是先到 AndroidManifest,在要播放影片的那一面加上 HardwareAccelerate,

接著覆寫 WebChromeClient 的 Method: onShowCustomView, onHideCustomView

主要目的是在 onShowCustomView 時,將得到的 View 放到最上層;在 onHideCustomView 時把剛才的 View 移掉,將原本的 WebView 放回來。

Reference: Android Webview app won't let video player go full screen

2014/06/25

.gitignore

最近同事不小心將 project 的 .idea 設定 commit 了,我才認真思考了一下要如何避免這種問題,為什麼我們在 .gitignore 忽略了 .idea 也沒效果,那是因為我們在那之前有先將 .idea push 上去過才會發生這種無法忽略的情況。於是我翻了一下 Google 在 GitHub 上的 Android project,參考了他們的 .gitignore

接下來我們還需要移除在 GitHub repo 上不需要的檔案,以 .idea 為例,

這樣以後這些非必要檔案就不會再出現在異動清單中,造成 commit 手誤了。
另外還可以參考 .gitignore 產生器:gitignore.io

2014/05/10

Save ArrayList to SharedPreferences

如果我們想要將 ArrayList 物件儲存到 SharedPreferences 裡,該如何做呢?
在 API level 11 之後,可以利用 Set 達到目的。

但如果需要同時支援以下的版本,可以對 ArrayList 做 serialize 及 de-serialize 後存取,


這裡使用到了 ObjectSerializer (Apache Pig project),下面是稍作修改的版本。

Reference: Save ArrayList to SharedPreferences