2013年5月30日 星期四

將應用程式捷徑加入 Sony SmallApp Dock

Sony 最近的手機 : Xperia TX ,  T , V , Z... 等,有所謂的 SmallApp
讓視窗可以浮在最上層不影響下層的操作。

之前曾發表過如何開發 Sony SmallApp 的文章,有興趣可以參考看看
不過當時 Sony SmallApp 的 framework 還是屬於舊版,
現在新版本的 SmallApp 就不能這麼做了,要稍微修改一下

然而包含我自己在內,很多人其實對在任何地方只要按下多工鍵(紅圈處),
就可以叫出 SmallApp 列的這項設計感覺到方便實用:




(我個人習慣將黃圈處這條工具列稱作 SmallApp Dock)

其實只要加一點點小技巧,就可以讓自己撰寫的程式能夠被
Sony 的 SmallApp Mamager 抓到,放進這個 SmallApp Dock 中,
這樣一來,想隨時隨地執行你的程式,就會方便很多。

如果自己不是用 Sony 手機,也可以在開發的專案裡面加入這個功能
讓 Sony 用戶可以從 SmallApp Dock 呼叫出自己的程式。

此方法還沒確定支援的機型,比 Xperia TX 還新的 T , V , Z 都可行,
而 Xperia TX 韌體版本應該在 197 以上的可以, 307 的可能要
root 後做一些手腳。




運作原理其實是真的建立一個 Sony SmallApp , 在 Small App 初始化的時候
(也就是在 onCreate 的地方),用 intent 打開自己寫的程式(Activity...etc),
接著再將 SmallApp 給 finish() 掉

而在做專案的時候,不需要將完整的 SmallApp Library 包進我的的 apk
這樣檔案會變肥,而且對非 Sony 用戶來說其實意義不大。

我們需要的是在撰寫程式的時候 Eclipse 能夠 reference 到這些方法
但在 build 的時候不要把 lib 編譯到 classes.dex 中,方法如下:
(如果將 .jar 放進專案的 lib/ 資料夾底下,是會被編譯到 dex 裡)

首先需要 sony smallApp 的 framework,可以到  Sony Developer World
下載 SmallApp SDK 最新版本的 framework ,或者我這邊的備份檔案:

com.sony.smallapp.jar
幾個月前從 Developer World 抓下來的,這個 lib 只提供開發時的參考
而已,lib 本身並沒有實際功能

com.sony.smallapp(combine).jar
這是從 Sony 手機中 SmallAppManagerService.apk 抽取出來的 lib
包含舊版的 framework 和新版的 framework 都在裡面,lib 並非只
是參照,而是有實際功能。

其實在這邊只需要用到官方提供的參照用的 jar 即可。

步驟如下:

Step1 : 到 Eclipse 專案處按右鍵,選擇 Build Path=>Add Libraries

Step2 : 選擇 User Libraries

PS : 如果之前有新增過,這邊會出現已經有的 User Library , 打勾即可

Step 3 : 點選 New , 並輸入一個名稱

Step 4 : 點一下剛新增的 Library ,接著 Add External JARs,並找到Lib的檔案

PS : 這邊我用的是抽取的 Combine 版本

Step 5 : 按下 OK 後,記得勾選要採用這個 Library






這樣一來就會在專案中看到這個 Lib 了



 接著在 AndroidManifest.xml 裡面加入權限:
<uses-permission android:name="com.sony.smallapp.permission.SMALLAPP" />
以及
<uses-library android:name="com.sony.smallapp.framework" android:required="false" />
PS : use-library 要在 <application> </application> 裡面

也就是要求要使用系統的 com,sony.smallapp.framework 這個 lib
因為 required 是 false , 所以對一般非 Sony 手機不會有任何影響

接著新建立一個 class , extends SmallApplication , 假設叫做 SmallAppEntry
http://pastie.org/7983729

裡面做的其實就是 start 我們程式的 Activity,如這裡的 EntryActivity,
接著隔一小段時間後讓這個 SmallApp 自殺。

最後在 AndroidManifest.xml處新增這個 SmallApplication 的
intent-filter即可,較完整  XML 如下: http://pastie.org/7983705

這樣一來 Sony 的手機就可以用囉~

希望有幫到大家 :)


至於較舊的 TX , 印象中系統本身沒有 smallapp framework library
所以如果有 root 的話,可以自行增加這個檔案,這樣在
<use-library> 的部分就可以抓到檔案了

http://ppt.cc/3n7j

沒有留言:

張貼留言