在Android Gingerbread引入了StorageManager這東西, 似乎是為了OBB(Opaque Binary Blobs)這功能而來的, 不過, 似乎是也還沒把tool含到SDK內, 也沒很詳細的說明文件, 所以看起來現在好像也沒啥人去用這個, 實際上試了一下, 最後還是有問題, 搞不好還有bug, 懶得繼續追下去了, 不過大致上理解怎來利用這東西

OBB是一個含有加過密的檔案系統的檔案, 唸起來頗繞口, 不過如果對Linux有點熟悉的話, 它是一個磁碟映像檔(image file), 最後會以loopback device的方式掛載入Android內(Android底層是Linux, 採用這種方式也不足為奇)

由於是加密過的, 所以, 應用程式可以把需要保密的內容放到這個檔內, 比如說私密的通訊資料庫啦, 或是見不得人的照片…(呃, 我講到哪去了)

要建立一個OBB的檔案需要幾個tool:

mkobb.sh

pdkdf2gen

obbtool

由於目前SDK好像還沒這幾個東西, 所以必須從aosp裡面去找, 前兩者是一組的, 要一起配合, 而且mkobb.sh只能在Linux底下跑, 如果你嘗試在Mac上跑(像我一樣), 是會失敗的 (不過想想, 目前沒支援Mac也很合理)

Linux下, 有幾個kernel module是一定必要被載入的

sudo modprobe cryptoloop

sudo modprobe twofish

sudo modprobe vfat

這樣你才可以建立一個被加密過的loopback file system image

執行的指令如下:

mkobb.sh -d obbdir -k password -o obbfile 

-d 後面那個obbdir可以改成任何一個存在的目錄, 建立好的obb檔會幫你含入所有這目錄裡面的檔案, -k 後面輸入加密的密碼, -o 後面加入輸出的檔名

執行後內容會如下:

最後一行裡的"5f88a3619e6544ef"這個salt很重要, 要抄下來, 之後會用到

接下來就要用obbtool加簽章了, obbtool用法如下:

加簽章: obbtool a -n com.yourcompany.app -v 1 obbtest.obb -s 5f88a3619e6544ef

移除: obbtool r ~/Dropbox/obbtest.obb

-n 後面是package name, 必須要跟你的應用程式的package name相同, -v 後面則是自定的版本, -s 後面接的就是剛剛做mkobb.sh後產生的salt了

這樣這個obb檔就完成了, 可以把它放到手機sdcard或其他地方讓你的程式存取

在程式內掛載obb的話就要用到StorageManager了:

不過目前, 我碰到的狀況就是, 明明state已經變成MOUNTED, 但我就是取不到mounted path, 怪怪的

http://www.traileraddict.com/clip/gullivers-travels/our-general

這部片其實蠻好笑的, 就是把原本格列佛遊記小人國的部份改成現代搞笑版, 含一小部分大人國的部份

想笑一下的可以去看一下, 但不值得看3D版, 太浪費, 3D效果實在少的可憐, 看3D真的只是折磨到自己而已!

裡面拿了很多電影來做文章, Star war, Top gun, GI Joe, Avatar, Titanic, Iron man …..尤其是跟Iron man決戰, 一直讓我有種似曾相識的感覺, 突然才想到,那個機器人其實就是仿Iron man … :P

好久沒有好好的渡個假了, 這次想說帶小遠來海洋公園, 難得來, 想說就住好一點, 就選了悅來, 離海洋公園也近, 而且還附贈門票, 不過這一趟從本來的去年底就要來的, 一來去年底忙的有點忘了催旅行社定相關的東西, 也沒多少空的時間請假, 後來挪到現在, 想說不管忙或不忙, 還是來放鬆一下吧

說實在的, 這邊貴有貴的價值, 風景真的沒話說, 海景房看出去是一片美麗的汪洋:

P1020525

夜景也沒話說, 實在很後悔自己沒腳架:

而且, 我們訂的價格是包含早餐, 一頓晚餐, 海洋公園門票(還可以重複去, 我們住兩晚, 櫃檯小姐說就算我們排兩天要去都沒問題), 還有四張飲料券跟一張遊戲券, 算是相當划算

晚餐是Buffet, 今晚去吃了, 菜色還算多, 但質的方面就不好了, 生魚片太早切放太久, 又沒啥人, 所以感覺不新鮮, 熱食外觀看起來不錯, 但吃起來就差很多了, 甜點的話還不錯, 但種類就少了一點, 今天已經是假日了, 感覺客人好少, 但服務生一堆, 盤子收的倒是蠻快的, 服務也蠻不錯的

飲料的部份在酒吧兌換, 換酒精類飲料要多加110, 但一般的不用, 我換了杯咖啡, 坐在這寫code, 寫了這篇, 兩個多小時了, 還幫我續杯, 不過這咖啡, 也不是很好喝就是了

剛剛賣店隨便逛了一下, 似乎賣的東西還不錯, 打算明天來去買些小禮物 

其實這是一個沒啥用的技巧(至少我還想不出應用), 就是加上一個像是浮水印的東西在畫面上, 不管在哪都會出現的, 像是這樣:

因為這個image要讓他一直不會消失, 所以他並不會是一個Activity, 因為Activity會有他的生命週期, 離開後就沒了, 所以要透過WindowManager去加上這個ImageView, 而且加上View的動作必須要給Background service去處理(這樣也就可以去做一些變化, 或動畫之類的)

首先, 要建立一個Service, 要達成這目的也很簡單, 在onCreate加上:

WindowManager wm = (WindowManager) this

.getSystemService(Service.WINDOW_SERVICE);

ImageView logo = new ImageView(this);

logo.setImageResource(R.drawable.onepieceoverlay);

WindowManager.LayoutParams lparam = new WindowManager.LayoutParams(

WindowManager.LayoutParams.WRAP_CONTENT,

WindowManager.LayoutParams.WRAP_CONTENT,

WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 0, PixelFormat.TRANSLUCENT);

lparam.gravity = Gravity.RIGHT | Gravity.TOP;

wm.addView(logo, lparam);

這樣就好了, 其實很簡單, 就是透過WindowManager在system overlay上加個view

但這樣還不會work, 因為少了一個permission, 所以必須在AndroidManifest裡面加上

<uses-permission android:name=“android.permission.SYSTEM_ALERT_WINDOW”></uses-permission>

這樣就好了

不過system overlay沒辦法接touch event, 所以這邊放的view真的只是拿來放好看的

昨天Mac的App store終於出來了, 這個東西還真是邪惡…不過, 也多了讓我們找好軟體的地方, 昨天抓了Evernote for Mac, 感覺還真好用

整個畫面很乾淨, 簡單, 不難上手

其中有幾個不錯的功能, 比如說可以從iSight拍照新增Note, 或是擷取screenshot來新增記事, 或是由剪貼簿貼入(如下)

加上所有的寫好的東西都是備份在網路上, 所以在其他裝置上也可以存取一樣的內容, 真的是很便利