ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2012年10月12日 星期五

about mirrorlink or terminal mode

Mirrorlink 就是把手機 panel (和 audio) 的延伸。
目前好像只有在車用系統上有用。

經由 MirrorLink,利用車用影音系統的lcd/touch 來控制手機。

目標是希望降低車用影音系統的成本,刪除掉與手機重複的功能。
同時又保有較大的螢幕和比較方便的操作。

mirrorlink 有一個專門的協會在運作。
規定了使用的 protocol。

但是好像沒有很嚴格,所以各家手機各有自己的 implement。

目前看來,好像是用 vnc。

在手機上 run VNC server。
再經由 usb cdc/ncm profile 傳送。


實際上 mirrorlink 要作到三件事:
  1. lcd screen mirror
  2. phone audion mirror
  3. touch event to phone
前兩項可以用 mdhi。這樣可以減少 phone 的 overhead,還有一些hardware 相容性問題 (hardware codec not always output to framebuffer)

touch event 就比較麻煩,他的需求有:
  1. absoulte pos , 而不是像 mouse 一樣的 move/relative pos
  2. system contol permission
這兩項是 couple 在一起的。

要把touch event 注入系統,通常都需要system permission。
如果使用系統support 的輸入裝置則不需要,像 bt/usb hid device

但是這些系統 support 的輸入裝置都是 relative posistion,沒有 absoult position。




google 一下 vnc server on android,會有一些application。
一樣,這些大多要求 root 權限。

即使不需要 root 權限 (例如:VMLite VNC server),
也需要 user 先將手機連上 pc,利用 pc 來開啟 vnc server。

這個動作應該是利用 adb 啟動 vnc server,因為 adb 有 system 權限。


猜測解決方法:

大概有兩種,
第一種就是把 adb command 內建,當手機連上時,用 adb command 啟動 手機上的 server。
第二種就是利用內建的 hid 裝置,加上一個校正動作,把touch 的 絕對位置 轉為 相對位置,送到手機。


一堆 inject Event 的 api 在後面的 android 版本都被刪除了,所以只剩下對 /dev/input/event 寫入的方法。
adb shell 有 shell 權限,測試 cat , echo pipe command,好像有對 /dev/input/event 讀寫的權限 -- shell ?
Android 4.0 以後 /system/bin 有 adb 命令,所以已經內建 adb client 端。

adb 可以重導到 tcp,所以可以經過 wifi,不必經過 usb..
-- 這個或許不需要,因為 mhl 可以同時使用 mhl , usb 功能。

所以 mirror link 有關 touch 的實做方法大概是:
  • user 開啟 'usb debug 功能', 接上 車機
  • 車機 接通手機的 adb shell,event 一個 c program 對 /dev/input/event 寫入 touch event

Sony 的車用系統有 mirrorlink,下面是手機的support list:
http://www.sony-asia.com/support/compatibility/499547

-- 大概就是 SONY, NOKIA (Symbian), Samsung 三家有 support。而且SONY, Samsung 是只有最新的一款有 support 而已。

XDA 有 release XAV601 的內容,這個 thread 有提到 sony release 的 library: http://forum.xda-developers.com/showthread.php?t=1686535&page=2
sony : http://www.sony.net/Products/Linux/Audio/XAV-701BT.html


PIONEER 用的是另一種方法:Display + app control。
用 HDMI, MHL 把手機螢幕,聲音顯示出來,至於控制的部份,再用 自己的 app 來作,手機上安裝 PIONEER 的 app,讓車用音響控制。
所以 google play 上有一堆 PIONEER 的 app。
https://play.google.com/store/apps/developer?id=PIONEER+CORPORATION

另外,基於 PIONEER 的 appradio ,有人寫出另一個軟體,讓 車用音響直接控制 android phone:(arliberator) https://play.google.com/store/apps/details?id=com.kyle.arliberator&feature=nav_result#?t=W251bGwsMSwyLDNd
-- 但是,這個軟體需要 root。
-- 從 FAQ 可以看到,root 是為了 inject touch event,還有是利用 BT 連接。

結果:最偷懶的作法是 HID,加上龜零。
每次點擊都當作mouse 從(0,0) 移動到點擊處,然後按下button。
這樣就可以避免mouse 只送相對 move 資料的問題。

當然,還要配上設定解析度,HID 裝置要先知道phone 的螢幕解析度。

沒有留言:

標籤

網誌存檔