2014年9月22日 星期一

當 Android 遇到 kjstar Z07-5

kjstar Z07-5 是福克斯最新拿到的小玩具 - 自拍棒,它非常 cool ,我們其實已經在一些電視節目中看過它了。

基本上,自拍棒一點都不神奇。神架的地方是它有一顆藍芽按鈕。這個按鈕可以趨動拍照功能。所以,大家不再需要像之前那樣,設定完自拍讀秒後,立刻拿起來擺姿勢。kjstar Z07-5 只要按下自拍鈕,立刻就拍照了。

但是,據福克斯的觀查,它的生產主要是來支援 iOS,而不是 Android。唉.......不過,沒關係,網路上已經很多人分享過,我們只需要把相機設定成 Volume Up/Down 拍照的模式,它還是支援的。可是,好景不常,並不是每台 Android 手機都支援。例如,福克斯使用的小米3就不支援。

然後,我們也會找到一些文章,他們會教大家改灌其它的 app ,或是直接灌 kjstar 的 app 就支援了。確實如此。不過,福克斯比較龜毛,福克斯喜歡使用原生的照相機體,或是自己喜歡的照相機軟體。所以,福克斯做做了一些研究。

首先,福克斯把 kjstar Z07-5 與 mac 電腦連線。果然,按下按鈕後,它被轉成 Volume Up 的按鍵。由於,硬體鍵盤的設計中,有一個 scancode 與 keycode 的對應表,這看似很複雜,其實簡單說就是,一個翻譯表,用來翻譯實際上鍵盤上的按鈕與電腦應用程式接收到的按鈕。如果,大家有 mac 電腦,當連上一個新的鍵盤後,mac 會請大家按下 右邊 shift 左邊的的鍵與左邊 shift 右邊的鍵。這個行為就是用來搜尋這個對應表。當然, Android 也有一模一樣的機制。

所以,福克斯就灌了一個鍵碼的顯示軟體,發現這個藍芽按鈕會送出 scancode 88 與 28 的按鍵。其中 28 只有 keyup 沒有 keydown。這個很明顯是用來 hack 某些 Android 手機。接著就需要看 keycode,在沒有對應的情況下會被對上 keycode 142 (scancode 88) 與 66 (scancode 28)。經由查表可以發現,keycode 142 是 KEYCODE_F12, 66 KEYCODE_CLEAR。這是什麼怪東西。但是,還是請大家注意,這個是沒有對應過的情況,對應過後會有不一樣的結果.



不過,沒關係,福克斯剛才說了,keycode 是有對應表的。我們只需要把它改成 Volume Up,我們一樣還是可以用音量鍵來拍照的。所以福克斯找了一下,發現在 Play Store 上有一個  app 叫:Apple Wireless Keyboard Keymap



安裝之後,我們需要做下面的動作:

  1. 進入系統設定頁
  2. 語言及輸入設定
  3. 點擊『實體鍵盤 kjstar』
  4. 點擊『設定鍵盤配置』
  5. 找到『 English (US) Apple Wireless Keyboard』 (有些人會顯示為英文(US) ...)
  6. 啟用『 English (US) Apple Wireless Keyboard』


這樣一來,我們就成功地把這個按鈕模擬成 Apple 的那隻很貴的鍵盤。接著,我們再按一下那顆藍芽按鈕,我們會看到 keycode 被改成 24 (KEYCODE_VOLUME_UP) 跟 66 (KEYCODE_CLEAR) 了。由於,Volume Up 有完整的 Key Down/Up 的事件,所以它的運作會很穩定。致於那個 66 就先別理它了。

最後,福克斯有跟其它朋友借他們的手機來連線試試。但是,發現 HTC 的相機因為太高級了,所以沒有支援 Volume Up/Down 拍照。所以還是不能用。不過,沒關係,致少廣大的 Android 使用者可以用這個方式來拍照了。



沒有留言:

張貼留言